Await Promise.all() vs. Multiple Await: Timing Difference
Dalam JavaScript, operasi tak segerak boleh dikendalikan menggunakan Promise.all( ) atau beberapa kenyataan menunggu. Walaupun kedua-dua kaedah akhirnya mempunyai tujuan yang sama iaitu menunggu beberapa janji untuk diselesaikan, terdapat beberapa perbezaan masa yang halus antara keduanya.
Senario 1: Menggunakan Promise.all()
Promise.all() mengambil pelbagai janji dan mengembalikan satu janji yang diselesaikan kepada pelbagai hasil sebaik sahaja semua janji input telah diselesaikan, tidak kira sama ada mereka menyelesaikan atau menolak.
Contoh:
const data = await Promise.all([res(3000), res(2000), res(1000)])
Dalam contoh ini, kaedah Promise.all() menangguhkan resolusi data sehingga ketiga-tiga janji input telah diselesaikan .
Senario 2: Menggunakan Berbilang menunggu Penyata
Dalam senario ini, beberapa kenyataan menunggu digunakan untuk menunggu setiap janji individu diselesaikan:
const t1 = task1(); const t2 = task2(); const result1 = await t1; const result2 = await t2;
Di sini, keputusan1 akan diselesaikan sebaik sahaja tugas1() selesai , dan result2 akan diselesaikan sebaik sahaja task2() selesai.
Masa Perbandingan
Perbezaan masa utama antara kedua-dua pendekatan ini ialah Promise.all() menangguhkan resolusi keputusan akhir sehingga semua janji input telah dijelaskan. Ini boleh memberi manfaat dalam senario yang penting untuk menunggu semua tugasan selesai sebelum meneruskan.
Sebaliknya, menggunakan berbilang kenyataan menunggu membolehkan tugasan individu diselesaikan secara bebas, yang berpotensi menghasilkan masa penyelesaian keseluruhan yang lebih cepat .
Contoh Ilustrasi
Mari kita pertimbangkan contoh di mana fungsi kelewatan digunakan untuk mensimulasikan tugas tak segerak:
Contoh #1 (Menggunakan Promise.all()):
const data = await Promise.all([res(3000), res(2000), res(1000)])
Contoh #2 (Menggunakan Berbilang menunggu Pernyataan):
const t1 = task1(); const t2 = task2(); const t3 = task3(); const result1 = await t1; const result2 = await t2; const result3 = await t3;
Dalam Contoh #1, kaedah Promise.all() akan menangguhkan resolusi data sehingga ketiga-tiga tugasan selesai, mengambil masa 3 saat. Dalam Contoh #2, memandangkan tugas diselesaikan secara berasingan, result1 akan tersedia selepas 1 saat, result2 selepas 2 saat dan result3 selepas 3 saat.
Atas ialah kandungan terperinci Promise.all() lwn. Pelbagai menanti: Bilakah Perbezaan Masa Penting?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!