Problem:
Wie führe ich einen Rückruf aus, wenn alle asynchronen Vorgänge innerhalb einer forEach-Schleife ausgeführt werden? abgeschlossen?
Lösung:
1. Verwenden eines einfachen Zählers:
Initialisieren Sie einen Zähler „itemsProcessed“ auf 0. Erhöhen Sie den Zähler im Rückruf jeder asynchronen Funktion. Wenn itemsProcessed die Gesamtlänge des Arrays erreicht, rufen Sie den „Alles erledigt“-Rückruf auf.
2. Verwenden von ES6-Promises:
Erstellen Sie mit Promise.all ein Array von Promise-Objekten, die jede asynchrone Operation darstellen. Wenn alle Versprechen abgeschlossen sind, wird der letzte Rückruf ausgeführt.
3. Verwenden einer asynchronen Bibliothek:
Verwenden Sie asynchrone Bibliotheken wie async, um Mechanismen zum Ausdrücken asynchroner Abschlussrückrufe bereitzustellen.
Überarbeitetes Beispiel (Zählermethode):
<code class="javascript">function callback() { console.log("All done!"); } var itemsProcessed = 0; [1, 2, 3].forEach((item, index, array) => { asyncFunction(item, () => { itemsProcessed++; if (itemsProcessed === array.length) { callback(); } }); });</code>
Überarbeitete erwartete Ausgabe:
3 done 1 done 2 done All done!
Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass ein Rückruf ausgeführt wird, nachdem alle asynchronen Vorgänge in einer forEach-Schleife abgeschlossen sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!