將延遲數組傳遞給$.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中文網其他相關文章!