首頁 >web前端 >js教程 >如何將延遲物件陣列傳遞給 jQuery 的 `$.when()`?

如何將延遲物件陣列傳遞給 jQuery 的 `$.when()`?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-09 21:57:13641瀏覽

How Can I Pass an Array of Deferred Objects to jQuery's `$.when()`?

將延遲數組傳遞給$.when()

處理一組複雜的非同步任務時,可以方便地將Deferred 物件數組傳遞給$.when() 方法,以在所有任務完成時發出通知。但是,預設情況下,$.when() 期望單獨的 Deferred 物件作為單獨的參數,如果 Deferred 物件的數量未知,則這可能不切實際。本文使用 Function.prototype.apply 提供了此問題的解決方案。

解決方案:

要將Deferred 物件陣列傳遞給$.when(),請使用Function.prototype.apply 方法如下:

$.when.apply($, my_array).then( ___ );

這允許您傳遞Deferred 物件的陣列作為$.when() 的單一參數。下面的範例程式碼示範了這個方法:

var deferreds = getSomeDeferredStuff();
$.when.apply($, deferreds).done(function() {
    $("div").append("<p>All done!</p>");
});

ES6:

在 ES6 中,您可以使用擴充運算子 (...)代替Function.prototype.apply:

$.when(...my_array).then( ___ );

注意:

要注意的是,提供給.then() 方法的處理函數應該處理參數數組檢索每個承諾的結果。由於處理程序所需的形式參數的數量可能事先未知,因此處理程序必須相應地處理參數數組。

以上是如何將延遲物件陣列傳遞給 jQuery 的 `$.when()`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn