Rumah > hujung hadapan web > tutorial js > Promise.all() lwn. Pelbagai menanti: Bilakah Perbezaan Masa Penting?

Promise.all() lwn. Pelbagai menanti: Bilakah Perbezaan Masa Penting?

Mary-Kate Olsen
Lepaskan: 2024-12-05 04:00:11
asal
476 orang telah melayarinya

Promise.all() vs. Multiple await: When Do Timing Differences Matter?

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)])
Salin selepas log masuk
Salin selepas log masuk

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;
Salin selepas log masuk

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)])
Salin selepas log masuk
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan