0
cheerio의 라이브러리 요청 기능 이외의 변수에 액세스 할 때 문제가 있습니다. 여기 요청 변수 외의 변수 액세스
내 코드는 더 나은 이해를 위해 단순화 :var fullDragonInfo = {};
dragonsInfo.forEach(dragon => {
request(`url=${dragon.name}`, function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
$('tr').each(function (i) {
let childrenElement = $(this).children('td').children('font');
breedingList.push({
'parent_1': {
'name': childrenElement.eq(0).text(),
'color': childrenElement.eq(0).attr('color')
},
'parent_2': {
'name': childrenElement.eq(1).text(),
'color': childrenElement.eq(1).attr('color')
},
'Tokens': childrenElement.last().text()
});
});
Object.assign(fullDragonInfo, {
[dragon.name]: {
'type': dragon.type,
'tier': dragon.tier,
'class': dragon.class,
'breedable_level': dragon.breedable_level,
'breeds_combination': breedingList
}
});
}
});
});
fs.writeFile("finalData.json", JSON.stringify(fullDragonInfo));
그래서 내 출력 파일
finalData.json
빈 객체를 보이고있다. 하지만 콜백 함수 내부에 콘솔 로그를 작성하면 데이터가 여기에 있습니다.
그래서 문제는 내가 콜백 외부에서 내 변수에 액세스 할 수 없다는 가정이지만 어떻게 할 수 있는지에 대한 단서가 없습니다.