Rumah >hujung hadapan web >tutorial js >Promise.all() lwn. Multiple Awaits: Bila Perlu Menggunakan Panggilan Async Serentak lwn. Sequential dalam JavaScript?
Panggilan Async Serentak lwn. Berurutan: Promise.all() lwn. Penantian Berbilang
Dalam JavaScript, pembangun sering menggunakan fungsi tak segerak untuk mengelakkan menyekat benang utama dan meningkatkan prestasi. Dua corak biasa untuk mengendalikan tugas tak segerak ialah menggunakan Promise.all() dan berbilang penyataan menunggu.
1. Promise.all()
Promise.all([promise1, promise2, ...]) mengambil pelbagai janji dan mengembalikan janji baharu yang diselesaikan apabila semua janji input telah diselesaikan (sama ada diselesaikan atau ditolak). Ini membolehkan anda menunggu beberapa operasi tak segerak selesai serentak.
2. Penantian Berbilang
Menggunakan pernyataan tunggu berbilang membolehkan anda menunggu operasi tak segerak satu demi satu. Ini secara berkesan mensiri operasi, melaksanakannya secara berurutan.
Perbezaan Masa
Perbezaan utama antara Promise.all() dan beberapa kenyataan menunggu terletak pada masanya. Promise.all() memulakan semua operasi tak segerak secara serentak, manakala beberapa penyataan menunggu melaksanakannya satu demi satu.
Perbezaan masa ini boleh menjejaskan prestasi dalam senario di mana sesetengah operasi tak segerak mengambil masa yang lebih lama daripada yang lain. Dalam kes sedemikian, menggunakan Promise.all() boleh meningkatkan prestasi dengan memanfaatkan kesesuaian.
Contoh
Pertimbangkan coretan kod berikut:
const res = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms)); const example = async () => { const start = Date.now(); const data = await Promise.all([res(3000), res(2000), res(1000)]); console.log(`Promise.all finished after: ${Date.now() - start}ms`); }; example();
Apabila melaksanakan kod ini, tiga operasi tak segerak (ditunda sebanyak 3000, 2000, dan 1000 milisaat, masing-masing) akan berjalan serentak. Akibatnya, Promise.all hanya akan diselesaikan setelah ketiga-tiga operasi selesai dan hasilnya akan direkodkan 3000 milisaat selepas permulaan fungsi.
Atas ialah kandungan terperinci Promise.all() lwn. Multiple Awaits: Bila Perlu Menggunakan Panggilan Async Serentak lwn. Sequential dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!