Heim > Web-Frontend > js-Tutorial > Hauptteil

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

Mary-Kate Olsen
Freigeben: 2024-11-04 12:53:01
Original
316 Leute haben es durchsucht

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">itemsProcessed++;
if(itemsProcessed === array.length) {
  callback();
}
Nach dem Login kopieren

});
});

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!

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 Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage