Heim > Web-Frontend > js-Tutorial > Wie führe ich eine Rückruffunktion nach der asynchronen Verarbeitung innerhalb einer ForEach-Schleife aus?

Wie führe ich eine Rückruffunktion nach der asynchronen Verarbeitung innerhalb einer ForEach-Schleife aus?

Susan Sarandon
Freigeben: 2024-11-04 15:10:02
Original
280 Leute haben es durchsucht

How to Execute a Callback Function After Asynchronous Processing within a ForEach Loop?

Callback-Abschluss nach asynchroner iterativer Verarbeitung

Problemstellung:

Wie können wir bei einem Array von Elementen a aufrufen? Rückruffunktion, nachdem die gesamte asynchrone Verarbeitung innerhalb einer forEach-Schleife abgeschlossen ist?

Lösung 1: Zählerbasierter Ansatz

  • In jedem asynchronen Rückruf einen Zähler erhöhen.
  • Führen Sie den „Fertig“-Rückruf aus, wenn der Zähler die Gesamtzahl der Elemente erreicht.
<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

Lösung 2: Versprechensbasierter Ansatz

Synchrone Ausführung:

  • Verketten Sie Versprechen mithilfe von Reduce() und Promise.resolve(), um eine synchrone Ausführung zu gewährleisten.
<code class="javascript">let requests = [1, 2, 3].reduce((promiseChain, item) => {
  return promiseChain.then(() => new Promise((resolve) => {
    asyncFunction(item, resolve);
  }));
}, Promise.resolve());

requests.then(() => console.log('done'));</code>
Nach dem Login kopieren

Asynchrone Ausführung:

  • Erstellen Sie mit map() ein Array von Versprechen.
  • Verwenden Sie Promise.all(), um den „Fertig“-Rückruf aufzurufen, wenn alle Versprechen erfüllt sind gelöst.
<code class="javascript">let requests = [1, 2, 3].map((item) => {
  return new Promise((resolve) => {
    asyncFunction(item, resolve);
  });
});

Promise.all(requests).then(() => console.log('done'));</code>
Nach dem Login kopieren

Lösung 3: Async-Bibliotheksnutzung

  • Nutzen Sie Bibliotheken wie async, um asynchrone Programmiermuster zu vereinfachen.
  • Informationen zu den von der Bibliothek bereitgestellten Callback-Vervollständigungsmechanismen finden Sie in der spezifischen Dokumentation.

Das obige ist der detaillierte Inhalt vonWie führe ich eine Rückruffunktion nach der asynchronen Verarbeitung innerhalb einer ForEach-Schleife aus?. 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