Ich habe ein Problem für den Zugriff auf meine Variable außerhalb der Anfrage-Funktion von cheerios Bibliothek.Access Variable außerhalb Anfrage cheerios Funktion
Hier ist mein Code für ein besseres Verständnis vereinfacht:
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));
So finalData.json
meine Ausgabedatei wird ein leeres Objekt zeigt. Aber wenn ich ein Konsolenprotokoll innerhalb der Rückruffunktion mache, sind die Daten hier.
Also ich nehme an, dass das Problem ist, dass ich nicht auf meine Variable außerhalb des Rückrufs zugreifen kann, aber ich habe keine Ahnung, wie ich es tun kann.