Pernyataan Masalah:
Memandangkan pelbagai elemen, bagaimana kita boleh menggunakan fungsi panggil balik selepas semua pemprosesan tak segerak dalam gelung forEach selesai?
Penyelesaian 1: Pendekatan Berasaskan Balas
<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>
Penyelesaian 2: Pendekatan Berasaskan Janji
Pelaksanaan Segerak:
<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>
Pelaksanaan Asynchronous:
<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>
Penyelesaian 3: Penggunaan Pustaka Async
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi Panggilan Balik Selepas Pemprosesan Asynchronous dalam ForEach Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!