Verzögern Sie jede Schleifeniteration im Knoten js async

7

Ich habe den folgenden Code:

%Vor%

Hat jemand einen Vorschlag darüber, wie ich jede Schleifeniteration in for loop verzögern kann? Angenommen, der Code wartet 10 Sekunden nach Abschluss jeder Iteration. Ich habe setTimeout ausprobiert, aber das hat nicht funktioniert.

    
user1665355 28.05.2015, 18:37
quelle

3 Antworten

12

Sie können ein Zeitlimit für die Ausführung des Codes in aufsteigenden Intervallen wie folgt setzen:

%Vor%

So läuft der erste sofort (Intervall * 0 ist 0), der zweite läuft nach zehn Sekunden usw.

Sie müssen i als letzten Parameter in setTimeout() senden, damit sein Wert an das Funktionsargument gebunden wird. Andernfalls wird der Versuch, auf den Array-Wert zuzugreifen, außerhalb des zulässigen Bereichs liegen und Sie erhalten undefined .

    
Trott 28.05.2015, 18:49
quelle
11

Eine andere Alternative wäre die Verwendung von async.eachSeries . Zum Beispiel:

%Vor%     
Rodrigo Medeiros 28.05.2015 19:38
quelle
9

Da Sie bereits async verwenden, wäre async.wilst eine gute Ergänzung für for .

whilst ist eine asynchrone while -ähnliche Funktion. Jede Iteration wird nur ausgeführt, nachdem die vorherige Iteration ihren Abschlussrückruf aufgerufen hat. In diesem Fall können wir die Ausführung des Completion Callbacks einfach um 10 Sekunden mit setTimeout zurückstellen.

%Vor%     
apsillers 28.05.2015 18:49
quelle

Tags und Links