Heim >Web-Frontend >js-Tutorial >Wie kann sichergestellt werden, dass ein Rückruf ausgeführt wird, nachdem alle asynchronen Vorgänge in einer forEach-Schleife abgeschlossen sind?

Wie kann sichergestellt werden, dass ein Rückruf ausgeführt wird, nachdem alle asynchronen Vorgänge in einer forEach-Schleife abgeschlossen sind?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 14:17:021027Durchsuche

How to Ensure a Callback is Executed After All Asynchronous Operations in a forEach Loop Complete?

Asynchroner forEach-Abschlussrückruf

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn