Tunggu dalam Siri lwn. Promise.all() untuk Tugasan Async Berbilang
Dalam JavaScript, terdapat dua pendekatan biasa untuk mengendalikan tugasan tak segerak : menunggu janji dalam siri atau menggunakan Promise.all(). Artikel ini meneroka perbezaan antara pendekatan ini, memfokuskan pada ciri pemasaannya.
menunggu dalam Siri
menunggu janji dalam siri melibatkan panggilan menunggu pada setiap tugas secara berurutan, seperti yang dilihat dalam coretan kod kedua. Ini membolehkan tugasan dilaksanakan mengikut turutan, yang bermaksud tugasan berikut tidak akan bermula sehingga tugasan sebelumnya selesai.
Promise.all()
Sebaliknya, Promise.all() mengambil pelbagai janji dan mengembalikan janji yang diselesaikan selepas semua janji input diselesaikan, seperti yang ditunjukkan dalam kod pertama coretan. Pendekatan ini membolehkan tugasan dilaksanakan secara serentak, yang boleh memberi manfaat untuk meningkatkan prestasi apabila tugasan boleh dilaksanakan secara bebas.
Perbezaan Masa
Perbezaan utama antara pendekatan ini terletak dalam masa mereka. Promise.all() melaksanakan semua tugas secara serentak, bermakna mereka mula berjalan serentak. Ini boleh membawa kepada masa pelaksanaan yang lebih cepat jika tugas itu bebas dan tidak bergantung antara satu sama lain. Sebaliknya, menunggu janji dalam siri melaksanakan tugas secara berurutan, yang bermaksud masa pelaksanaan akan menjadi jumlah masa pelaksanaan setiap tugas.
Contoh:
Pertimbangkan contoh berikut, di mana kita mempunyai tiga tugasan yang mengambil masa 1000ms, 2000ms dan 3000ms untuk dilaksanakan:
const task1 = () => Promise.resolve(1); const task2 = () => Promise.resolve(2); const task3 = () => Promise.resolve(3); const [result1, result2, result3] = await Promise.all([task1(), task2(), task3()]); console.log(result1, result2, result3); // logs 1 2 3
Dalam contoh ini, menggunakan Promise.all() membenarkan tugasan dilaksanakan serentak, mengurangkan masa pelaksanaan dengan ketara berbanding menunggu tugasan secara bersiri.
Kesimpulan
Kedua-dua pendekatan mempunyai kegunaannya, bergantung mengenai keperluan khusus permohonan anda. Jika anda memerlukan tugasan untuk dilaksanakan secara berurutan, tunggu mereka secara bersiri. Jika tugasan boleh dilaksanakan secara bebas, menggunakan Promise.all() boleh meningkatkan prestasi.
Atas ialah kandungan terperinci Tunggu dalam Siri lwn. Promise.all(): Bilakah Saya Harus Menggunakan Yang Mana untuk Berbilang Tugas Async?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!