Ich hämmere meinen Kopf gegen die Wand, um herauszufinden, wie Daten, die asynchron in ein Array geschrieben werden, in eine Datei geschrieben werden. Das synchrone Schreiben der Daten (und Prüfen, ob das Element das letzte auf der Liste ist) benötigt zu viel Zeit, so dass ich beschloss, es asynchron laufen zu lassen. Nach einigen Nachforschungen scheint es, dass ich einen Rückruf verwenden könnteAusführen einer Funktion, nachdem der asynchrone Vorgang abgeschlossen ist
Ich würde es vorziehen, keine externe Bibliothek dafür zu verwenden, da ich ziemlich sicher bin, entweder ein Callback oder ein Versprechen sollte den Trick tun. Vielen Dank!
//Iterate through list and make HTTP request to get data
dataDocument.map(function(item, index) {
request(item, function(err, res, html) {
if (err) throw err;
renderData(html, item);
});
});
//Renders data
function renderData(html, item) {
...some calculations here.
writeData(output, id, function() {
pushed(output);
});
};
//Writes the data on file
function writeData(output, id) {
fs.appendFile('./output.json', output);
//SHOULD I USE A CALLBACK HERE TO PUSH INTO AN ARRAY ONCE IT'S COMPLETE?
};
//NEED HELP HERE: Pushed the data into an array and eliminates last comma.
function pushed(data) {
var arr = [];
arr.push(data);
}
nicht ‚Verstehen zu überprüfen, ob der Punkt auf der Liste der letzte ist) nimmt zu viel Zeit, so habe ich beschlossen, es zu machen, laufen asynchron '. Können Sie den Arbeitsablauf dieses Datenprozesses grundsätzlich beschreiben? – wannadream
Sie können sich im Allgemeinen nicht dazu entschließen, etwas Asynchrones zu erstellen. Die zugrunde liegende Operation ist entweder asynchron oder nicht. Das Hinzufügen eines Elements zu einem Array ist sicherlich nicht selbst asynchron. 'fs.appendFile()' ist selbst async. Wirklich nicht sicher, was du erreichen willst. Unklare Frage, wie es jetzt steht. Bitte klären Sie mit weiteren Einzelheiten, was Sie zu tun versuchen. Und verwenden Sie bitte Text in Ihrer Frage, nicht nur Kommentare in Ihrem Code. – jfriend00
Versprechen zurück und verkettet "dann", um eine Kaskade von Versprechen zu bilden, die iterativ aufgerufen werden. – botika