Ich habe einen solchen Code:Kann die Asynchronität von JavaScript-NodeJS Griff
function onDoneFunction()
{
console.log("done!");
}
function generalQuery(generalArray, onDoneFunction)
{
function go(i)
{
if(i >= generalArray.length)
{
onDoneFunction();
}
else
{
iteratorFunction(generalArray[i], function()
{
console.log("entering callback " + i);
return go(i + 1);
});
}
}
go(0);
}
Und mein iteratorFunction
wie folgt aussieht:
function iteratorFunction(partofquery, callback)
{
var index = generalArray.indexOf(partofquery);
collection.find(partofquery).then(function(data)
{
console("query completed " + index);
}
}
meiner Anfrage Array hat zwei Elemente Gesetzt, ich sehe solche Ausgänge:
Eingabe Rückruf 0
Eingabe Rückruf 1
Abfrage abgeschlossen 0
Abfrage abgeschlossen 1
Aber ich versuche, dies zu sehen:
Eingabe Rückruf 0
Abfrage abgeschlossen 0
eingeben Rückruf ing 1
Abfrage abgeschlossen 1
Ich habe Schleife Wartezeit zu machen versucht, für eine Iteration vor dem Start des nächsten zu beenden. Ich habe viele Dinge ausprobiert. Wie Sie sehen können, habe ich auch Rekursion versucht. Aber das kann ich nicht erreichen. Könntest du mir bitte zeigen, was ich falsch mache? Danke im Voraus.
'. dann - ahh, also musst du einige Versprechungen durch das Aussehen verketten –
@JaromandaX Könntest du mit meinem Code ein Beispiel zeigen? – jason
Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –