Mengendalikan Berbilang Operasi Asynchronous Secara serentak
Dalam senario di mana urutan operasi tak segerak (diwakili sebagai Janji) dilaksanakan, ia menjadi perlu untuk menentukan apabila semua operasi ini telah selesai sebelum meneruskan dengan tugasan seterusnya. Artikel ini menyediakan penyelesaian kepada cabaran ini dengan memanfaatkan kaedah Promise.all().
Seperti yang anda nyatakan, fungsi doSomeAsyncStuff() melaksanakan tugas tak segerak. Dengan mengubah suainya untuk mengembalikan Janji, kami boleh menangkap status penyiapan setiap operasi tak segerak. Ini membolehkan kami mengumpul semua Janji ini ke dalam tatasusunan, yang kemudiannya diserahkan kepada Promise.all().
Kaedah Promise.all() menerima tatasusunan Janji sebagai parameternya. Setelah semua Janji dalam tatasusunan sama ada diselesaikan atau ditolak, Promise.all() mengembalikan satu Janji. Janji tunggal ini menyelesaikan kepada tatasusunan keputusan (atau sebab penolakan) daripada Janji individu.
Dalam kod anda, anda boleh melaksanakan ini dengan memasukkan langkah berikut:
const promises = []; // Create a Promise for each asynchronous operation for (let i = 0; i < 5; i++) { promises.push(doSomeAsyncStuff()); } // Use Promise.all to wait for all the Promises to resolve Promise.all(promises) .then(() => { // All asynchronous operations have completed. Execute subsequent tasks here. for (let i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } }) .catch((e) => { // Handle any errors that occurred during the asynchronous operations. });
Oleh menggunakan Promise.all(), anda boleh memastikan bahawa semua operasi tak segerak telah berjaya diselesaikan sebelum melaksanakan tugas yang bergantung pada mereka. keputusan.
Untuk penjelasan lanjut, rujuk contoh yang disediakan:
function doSomethingAsync(value) { return new Promise((resolve) => { setTimeout(() => { console.log("Resolving " + value); resolve(value); }, Math.floor(Math.random() * 1000)); }); } function test() { const promises = []; for (let i = 0; i < 5; ++i) { promises.push(doSomethingAsync(i)); } Promise.all(promises) .then((results) => { console.log("All done", results); }) .catch((e) => { // Handle errors here }); } test();
Dalam contoh ini, kami mentakrifkan fungsi tak segerak doSomethingAsync() yang diselesaikan dengan kelewatan rawak. Kami mencipta pelbagai Janji dan menggunakan Promise.all() untuk menunggu kesemuanya diselesaikan. Setelah semuanya berjaya diselesaikan, kami boleh meneruskan tugasan kami yang seterusnya.
Atas ialah kandungan terperinci Bagaimanakah Promise.all() Boleh Mengendalikan Berbilang Operasi Asynchronous Serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!