用法
jQuery.when( deferreds ) => Promise
jQuery.when( deferreds ) => Promise
說明:提供一種基於零個或多個 Thenable 對象執行回調函數的方法,通常延期表示異步事件的對象。
-
添加的版本:1.5
jQuery.when( deferreds )
-
deferreds零個或多個 Thenable 對象。
-
如果沒有參數傳遞給 jQuery.when()
,它將返回一個已解決的 Promise。
如果將單個 Deferred 傳遞給 jQuery.when()
,則該方法將返回其 Promise 對象(Deferred 方法的子集)。可以調用 Promise 對象的其他方法來附加回調,例如
。當 Deferred 被解決或拒絕時,通常是由最初創建 Deferred 的代碼,適當的回調將被調用。例如deferred.then
jQuery.ajax()
返回的jqXHR對象是Promise-compatible對象,可以這樣使用:
|
如果將單個參數傳遞給 jQuery.when()
並且它不是 Deferred 或 Promise,它將被視為已解決的 Deferred,並且任何附加的 doneCallbacks 都將立即執行。 doneCallbacks 傳遞原始參數。在這種情況下,您可能設置的任何 failCallbacks 都不會被調用,因為 Deferred 永遠不會被拒絕。例如:
|
如果您根本不傳遞任何參數,jQuery.when()
將返回一個已解決的承諾。
|
在將多個 Deferred 對象傳遞給 jQuery.when()
的情況下,該方法從一個新的 "master" Deferred 對象返回 Promise,該對象跟蹤已傳遞的所有 Deferred 的聚合狀態。該方法將在所有 Deferred 解析後立即解析其主 Deferred,或者在其中一個 Deferred 被拒絕時拒絕主 Deferred。如果 master Deferred 已解決,則執行 master Deferred 的 doneCallbacks。傳遞給 doneCallbacks 的參數提供了每個 Deferred 的解析值,並與 Deferred 傳遞給 jQuery.when()
的順序相匹配。例如:
|
如果 Deferred 在沒有值的情況下被解析,則相應的 doneCallback 參數將未定義。如果 Deferred 解析為單個值,則相應的參數將保存該值。在 Deferred 解析為多個值的情況下,相應的參數將是這些值的數組。例如:
|
在其中一個 Deferred 被拒絕的 multiple-Deferreds 情況下,jQuery.when()
立即為其主 Deferred 觸發 failCallbacks。請注意,此時某些 Deferreds 可能仍未解決。傳遞給 failCallbacks 的參數與被拒絕的 Deferred 的 failCallback 簽名匹配。如果您需要針對這種情況執行額外的處理,例如取消任何未完成的 Ajax 請求,您可以在閉包中保留對底層 jqXHR 對象的引用,並在 failCallback 中檢查/取消它們。
例子:
兩次ajax請求成功後執行一個函數。 (有關 ajax 請求的成功和錯誤案例的完整說明,請參閱 jQuery.ajax() 文檔)。
|
當兩個ajax請求都成功時執行函數myFunc
,如果其中一個有錯誤則執行myFailure
。
|
相關用法
- JQuery jQuery.inArray()用法及代碼示例
- JQuery Mobile jQuery.mobile.path.get()用法及代碼示例
- JQuery jQuery.grep()用法及代碼示例
- JQuery Mobile jQuery.mobile.navigate()用法及代碼示例
- JQuery Mobile jQuery.mobile.path.isRelativeUrl()用法及代碼示例
- JQuery jQuery.dequeue()用法及代碼示例
- JQuery jQuery.escapeSelector()用法及代碼示例
- JQuery Mobile jQuery.mobile.silentScroll()用法及代碼示例
- JQuery jQuery.cssNumber用法及代碼示例
- JQuery jQuery.map()用法及代碼示例
- JQuery jQuery.readyException()用法及代碼示例
- JQuery jQuery.parseJSON()用法及代碼示例
- JQuery jQuery.contains()用法及代碼示例
- JQuery Mobile jQuery.mobile.path.makePathAbsolute()用法及代碼示例
- JQuery jQuery.each()用法及代碼示例
- JQuery jQuery.unique()用法及代碼示例
- JQuery jQuery.getJSON()用法及代碼示例
- JQuery jQuery.proxy()用法及代碼示例
- JQuery jQuery.ajaxSetup()用法及代碼示例
- JQuery jQuery.type()用法及代碼示例
- JQuery jQuery.cssHooks用法及代碼示例
- JQuery UI jQuery.effects.define()用法及代碼示例
- JQuery jQuery.parseXML()用法及代碼示例
- JQuery jQuery.support用法及代碼示例
- JQuery Mobile jQuery.mobile.path.isAbsoluteUrl()用法及代碼示例
注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 jQuery.when()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。