Heim >Web-Frontend >js-Tutorial >Wie führe ich einen Rückruf aus, nachdem asynchrone forEach-Aufgaben abgeschlossen sind?

Wie führe ich einen Rückruf aus, nachdem asynchrone forEach-Aufgaben abgeschlossen sind?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 12:53:01365Durchsuche

How to Execute a Callback after Asynchronous forEach Tasks Complete?

Ausführen eines Rückrufs, nachdem asynchrone forEach-Aufgaben abgeschlossen sind

Problem

Wie können wir eine Rückruffunktion ausführen, sobald alles asynchron ist? Operationen innerhalb einer forEach-Schleife wurden abgeschlossen?

Antwort

Array.forEach bietet keine sofort einsatzbereite Lösung für dieses Szenario, aber es gibt sie verschiedene Ansätze, um die gewünschte Funktionalität zu erreichen.

Verwendung eines Zählers

<br>function callback() { console.log('all done'); }</p>
<p>var itemsProcessed = 0;</p>
<p>[1, 2, 3].forEach(item => {<br> asyncFunction(item, () => {</p>
<pre class="brush:php;toolbar:false">itemsProcessed++;
if(itemsProcessed === array.length) {
  callback();
}

});
});

Dieser Ansatz verwendet einen Zähler, der jedes Mal erhöht wird, wenn ein asynchroner Vorgang abgeschlossen ist. Sobald der Zähler die Gesamtzahl der Elemente im Array erreicht, wird die Rückruffunktion aufgerufen.

Verwendung von ES6-Versprechen

  • Synchronisierte Ausführung:
    < ;pre>
    const request = [1, 2, 3].reduce((promiseChain, item) => {
    return PromiseChain.then(() => new Promise((resolve) => {
    asyncFunction(item,solve);
    }));
    }, Promise.resolve());

requests.then(() => console. log('done'))

In diesem Beispiel verketten wir Versprechen, um sicherzustellen, dass jeder asynchrone Vorgang abgeschlossen wird, bevor der nächste beginnt.

  • Asynchrone Ausführung:
    <br>const request = [1,2,3].map((item) => {<br>return new Promise((resolve) = > {<br> asyncFunction(item, discover);<br>});<br>})</li></ul>
    <p>Promise.all(requests).then(() => console.log ('done'));<br>

    In diesem Fall verwenden wir die Promise.all-Methode, um alle asynchronen Vorgänge gleichzeitig auszuführen und rufen dann den Rückruf auf, wenn alle abgeschlossen sind.

    Verwendung einer asynchronen Bibliothek

    Asynchrone Bibliotheken wie async bieten Mechanismen, um die gewünschte Funktionalität eleganter auszudrücken.

    Das obige ist der detaillierte Inhalt vonWie führe ich einen Rückruf aus, nachdem asynchrone forEach-Aufgaben 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