Cara Mengendalikan Pelbagai Janji dan Menunggu Penyelesaiannya
Apabila bekerja dengan kod tak segerak, selalunya perlu mengendalikan berbilang janji dan menunggunya semua perlu diselesaikan sebelum meneruskan. Artikel ini akan membimbing anda untuk mencapai matlamat ini menggunakan Promise.all.
Introducing Promise.all
Promise.all menerima pelbagai janji dan mengembalikan satu janji yang dapat diselesaikan apabila semua janji input telah diselesaikan, atau menolak jika salah satu daripadanya menolak.
Menstrukturkan semula doSomeAsyncStuff untuk Mengembalikan Janji
Untuk menjadikan doSomeAsyncStuff berfungsi dengan janji, ubah suainya seperti berikut:
function doSomeAsyncStuff() { return new Promise((resolve) => { editor.on('instanceReady', function(evt) { doSomeStuff(); resolve(true); }); }); }
Menggunakan Promise.all untuk Menunggu Semua Async Tugasan
Setelah doSomeAsyncStuff mengembalikan janji, anda boleh menggunakan Promise.all untuk menunggu semua kejadian itu selesai. Berikut ialah versi kod anda yang dipertingkatkan:
const promises = []; for (let i = 0; i < 5; i++) { promises.push(doSomeAsyncStuff()); } Promise.all(promises) .then(() => { for (let i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } }) .catch((e) => { // Handle errors here });
Kod ini mencipta pelbagai janji daripada setiap panggilan ke doSomeAsyncStuff. Promise.all mengambil tatasusunan ini dan menunggu semua janji diselesaikan. Setelah semua janji diselesaikan, panggilan balik kemudian dilaksanakan, membolehkan anda melakukan tindakan yang bergantung pada hasil tugas tak segerak.
Atas ialah kandungan terperinci Bagaimana Menggunakan Promise.all untuk Mengurus dan Menunggu Pelbagai Janji?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!