Bagaimana untuk Melaksanakan Panggilan Balik selepas Asynchronous forEach Tasks Selesai?

Mary-Kate Olsen
Lepaskan: 2024-11-04 12:53:01
asal
308 orang telah melayarinya

How to Execute a Callback after Asynchronous forEach Tasks Complete?

Melaksanakan Panggilan Balik selepas Asynchronous forEach Tasks Selesai

Masalah

Bagaimanakah kita boleh melaksanakan fungsi panggil balik setelah semuanya tak segerak operasi dalam satu gelung forEach telah selesai?

Jawapan

Array.forEach tidak menyediakan penyelesaian luar kotak untuk senario ini, tetapi terdapat pelbagai pendekatan untuk mencapai kefungsian yang diingini.

Menggunakan Kaunter

<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();
}
Salin selepas log masuk

});
});

Pendekatan ini menggunakan pembilang yang dinaikkan setiap kali operasi tak segerak selesai. Sebaik sahaja kaunter mencapai jumlah bilangan item dalam tatasusunan, fungsi panggil balik akan digunakan.

Menggunakan Janji ES6

  • Pelaksanaan Segerak:
    < ;pra>
    permintaan const = [1, 2, 3].reduce((promiseChain, item) => {
    return promiseChain.then(() => new Promise((resolve) => {
    asyncFunction(item, resolve);
    }));
    }, Promise.resolve());

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

Dalam contoh ini, kami berjanji untuk menjamin bahawa setiap operasi tak segerak selesai sebelum operasi seterusnya bermula.

  • Pelaksanaan Asynchronous:
    <br>permintaan const = [1,2,3].map((item) => {<br>kembali Janji baharu((resolve) = > {<br> asyncFunction(item, resolve);<br>});<br>})</li></ul>
    <p>Promise.all(requests).then(() => console.log ('done'));<br>

    Dalam kes ini, kami menggunakan kaedah Promise.all untuk melaksanakan semua operasi tak segerak secara serentak dan kemudian memanggil panggilan balik apabila kesemuanya selesai.

    Menggunakan Pustaka Async

    Pustaka tak segerak seperti async menyediakan mekanisme untuk menyatakan fungsi yang diingini dengan lebih elegan.

    Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Panggilan Balik selepas Asynchronous forEach Tasks Selesai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan