首頁 >web前端 >js教程 >如何確保 $.when() 等待數組中的所有延遲任務?

如何確保 $.when() 等待數組中的所有延遲任務?

Linda Hamilton
Linda Hamilton原創
2024-12-11 02:41:19992瀏覽

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

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

問題:

考慮以下程式碼,其中列表建立了的延遲任務:

var deferreds = getSomeDeferredStuff();

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

但是, 「都完成了!」在所有延遲任務完成之前記錄。如何將一組 deferred 傳遞給 $.when() 並確保它等待所有任務完成?

答案:

傳遞一組值到需要單獨參數的函數,請使用Function.prototype.apply:

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

Here's a程式碼分解:

  • $.when.apply($, deferreds):將 deferreds 陣列分散到 $.when().
  • then(function) 的單獨參數:附加一個在解決所有延遲時執行的處理程序。

或者,在ES6 和新版本中,您可以使用擴充運算子:

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

在任何一種情況下,處理程序都會收到一組結果,每個延遲一個。處理這個陣列以獲得你需要的值。

以上是如何確保 $.when() 等待數組中的所有延遲任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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