Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Memastikan $.when() Menunggu Semua Tugas Tertunda dalam Tatasusunan?

Bagaimana untuk Memastikan $.when() Menunggu Semua Tugas Tertunda dalam Tatasusunan?

Linda Hamilton
Lepaskan: 2024-12-11 02:41:19
asal
1027 orang telah melayarinya

How to Ensure $.when() Waits for All Deferred Tasks in an Array?

Melalukan Tatasusunan Tertunda kepada $.when()

Soalan:

Pertimbangkan kod berikut di mana senarai tugas tertunda dibuat:

var deferreds = getSomeDeferredStuff();

$.when(deferreds).done(function() { console.log("All done!") });
Salin selepas log masuk

Walau bagaimanapun, "Semua selesai!" dilog sebelum semua tugas tertunda selesai. Bagaimanakah anda boleh menghantar tatasusunan penangguhan ke dalam $.when() dan memastikan ia menunggu sehingga semua tugasan selesai?

Jawapan:

Untuk lulus tatasusunan nilai kepada fungsi yang menjangkakan parameter yang berasingan, gunakan Function.prototype.apply:

$.when.apply($, deferreds).then(function() { console.log("All done!") });
Salin selepas log masuk

Berikut ialah pecahan kod:

  • $.when.apply($, deferreds): Menyebarkan tatasusunan tertunda ke dalam argumen berasingan untuk $.when().
  • then(function): Lampirkan pengendali yang berjalan apabila semua penangguhan diselesaikan.

Sebagai alternatif, dalam ES6 dan lebih baharu, anda boleh menggunakan operator spread:

$.when(...deferreds).then(function() { console.log("All done!") });
Salin selepas log masuk

Dalam mana-mana kes, pengendali akan menerima pelbagai keputusan, satu untuk setiap tertunda. Proses tatasusunan ini untuk mendapatkan nilai yang anda perlukan.

Atas ialah kandungan terperinci Bagaimana untuk Memastikan $.when() Menunggu Semua Tugas Tertunda dalam Tatasusunan?. 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