Heim > Web-Frontend > js-Tutorial > Hauptteil

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

Linda Hamilton
Freigeben: 2024-11-04 14:17:02
Original
984 Leute haben es durchsucht

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>
Nach dem Login kopieren

Überarbeitete erwartete Ausgabe:

3 done
1 done
2 done
All done!
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage