Asynchrone Rückrufausführung nach „forEach“-Iteration
Abfrage:
Wie kann ein Rückruf erfolgen? ausgeführt werden, nachdem alle asynchronen Rückrufe einer 'forEach'-Schleife ausgeführt wurden abgeschlossen?
Lösung:
Array.forEach unterstützt diese Funktionalität nicht grundsätzlich. Es gibt jedoch mehrere alternative Ansätze, um dieses Ziel zu erreichen:
1. Zähler:
Verfolgen Sie die Anzahl der verarbeiteten Artikel mithilfe eines Zählers. Erhöhen Sie den Zähler im Rückruf jedes asynchronen Vorgangs und rufen Sie den letzten Rückruf auf, wenn der Zähler die Gesamtzahl der Elemente erreicht.
2. Versprechen (ES6):
a. Sequentielle Ausführung:
Verketten Sie Versprechen nacheinander, um die synchrone Ausführung asynchroner Aufgaben zu gewährleisten und sicherzustellen, dass jedes Element in der Reihenfolge verarbeitet wird, in der es im Array erscheint.
b. Parallele Ausführung:
Verwenden Sie die Promise.all()-Methode, um alle asynchronen Aufgaben parallel auszuführen, ohne die Ausführungsreihenfolge zu garantieren.
3. Async-Bibliothek:
Beliebte Bibliotheken wie Async.js bieten Mechanismen zum Ausdrücken des erforderlichen Verhaltens, wie Async#series() und Async#parallel().
Ursprüngliche Beispielimplementierung (synchron):
Der Originalcode in der Frage wird beispielhaft dargestellt ein synchrones Szenario, und die folgende Implementierung kann verwendet werden:
posts.foreach(function(v, i) { res.write(v + ". index " + i); }); res.end();
Das obige ist der detaillierte Inhalt vonWie führe ich einen Rückruf aus, nachdem alle asynchronen Rückrufe innerhalb einer „forEach'-Schleife beendet wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!