Node.js: Callback-Funktion am Ende jeder iteration in einer for-Schleife
In Node.js ich habe eine Funktion, die geht durch eine ganze Liste von Elementen und hat einige Datenbank-Aufrufe, wie unten gezeigt:
for(var j=0; j<elements.length; j++)
{
//do some database calls
}
Nach jeder Schleife beendet ist (d.h. wenn die Datenbank-Aufrufe beenden), möchte ich "Konsole.log("Schleife beendet");". Im code unten habe ich gezeigt, mein Versuch, dieses Problem zu lösen:
for(var j=0; j<elements.length; j++)
{
(function()
{
//do some database calls
})(function(){
console.log("Loop terminated");
});
}
Ich eine anonyme Funktion in Ort, und ich bin versucht, callback-Funktion, die gedruckt werden " - Konsole.log("Schleife beendet")". Wenn ich diesen code ausführen, der Konsole.Protokoll nie drucken alles. Ich bin ziemlich neu im Node.js und ich verstehe nicht, Rückrufe, gut. Kann mir jemand erklären, warum mein Rückruf nicht funktioniert und wie ich es beheben kann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, um Datenbank-Aufrufe parallel:
wenn Sie gehen, um zu speichern Sie alle Ergebnisse, die Sie drücken können, um
allResults
array und überprüfen Sie die Länge statt inkrementierenden Zähler.Wenn Sie wollen, um den sequenziellen for-Schleife, Sie müssen Rekursion-Muster (beachten Sie, dass es nicht wirklich Rekursion)
meisten Menschen neigen dazu zu verwenden async Bibliothek, aber ich empfehle, um zu versuchen, alle async-patterns manuell mindestens einmal