Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Melaksanakan Panggilan Balik Selesai untuk Asynchronous forEach Gelung?

Bagaimana untuk Melaksanakan Panggilan Balik Selesai untuk Asynchronous forEach Gelung?

DDD
Lepaskan: 2024-11-04 13:09:01
asal
703 orang telah melayarinya

How to Implement a Completion Callback for Asynchronous forEach Loops?

Asynchronous forEach Callback: Melaksanakan Panggilan Balik Selesai

Dalam senario di mana gelung tak segerak seperti forEach digunakan, keperluan sering timbul untuk mencetuskan panggil balik setelah semua operasi tak segerak selesai. Panduan ini membentangkan beberapa pendekatan untuk mencapai fungsi ini.

1. Menggunakan Pembilang Mudah

Teknik ini menggunakan pembilang yang bertambah setiap kali item diproses. Apabila kaunter mencapai jumlah bilangan item, panggilan balik penyelesaian akan dipanggil.

function callback () { console.log('all done'); }

var itemsProcessed = 0;

[1, 2, 3].forEach((item, index, array) => {
  asyncFunction(item, () => {
    itemsProcessed++;
    if(itemsProcessed === array.length) {
      callback();
    }
  });
});
Salin selepas log masuk

2. Memanfaatkan Janji ES6

Janji membolehkan penciptaan rantai janji berurutan, memastikan pelaksanaan segerak bagi tugas tak segerak.

function asyncFunction (item, cb) {
  setTimeout(() => {
    console.log('done with', item);
    cb();
  }, 100);
}

let requests = [1, 2, 3].reduce((promiseChain, item) => {
    return promiseChain.then(() => new Promise((resolve) => {
      asyncFunction(item, resolve);
    }));
}, Promise.resolve());

requests.then(() => console.log('done'))
Salin selepas log masuk

3. Menggunakan Perpustakaan Asynchronous

Perpustakaan seperti "async" menyediakan mekanisme untuk menyatakan fungsi yang diingini. Pelaksanaan khusus akan berbeza-beza bergantung pada perpustakaan yang dipilih.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Panggilan Balik Selesai untuk Asynchronous forEach Gelung?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan