jQuery.when() 方法

2018-11-22 11:11 更新

jQuery.when() 方法

jQuery 雜項(xiàng)方法jQuery 雜項(xiàng)方法

實(shí)例

一個(gè)參數(shù)傳遞給 $.when() 被受理,執(zhí)行回調(diào)函數(shù)

$(function () {
    $.
when( { testing: 123 } ).done(
    function
(x) { alert(x.testing); } /* alerts "123" */
    )
;
})

嘗試一下 ?

定義和用法

$.when() 函數(shù)提供一種方法來(lái)執(zhí)行一個(gè)或多個(gè)對(duì)象的回調(diào)函數(shù)。

提示:如果向 jQuery.when 傳入一個(gè)延遲對(duì)象,那么會(huì)返回它的 Promise 對(duì)象(延遲方法的一個(gè)子集)。可以繼續(xù)綁定 Promise 對(duì)象的其它方法,例如, defered.then 。當(dāng)延遲對(duì)象已經(jīng)被受理(resolved)或被拒絕(rejected)(通常是由創(chuàng)建延遲對(duì)象的最初代碼執(zhí)行的),那么就會(huì)調(diào)用相應(yīng)的回調(diào)函數(shù)。


語(yǔ)法

$.when( deferreds )

參數(shù)描述
deferredsDeferred類(lèi)型 一個(gè)或多個(gè)延遲對(duì)象,或者普通的JavaScript對(duì)象


實(shí)例

更多實(shí)例


如果你不傳遞任何參數(shù),jQuery.when()將返回一個(gè)resolved(受理)狀態(tài)的 promise 對(duì)象。

實(shí)例

不傳遞任何參數(shù),執(zhí)行回調(diào)函數(shù)

[mycode3 type="javascript"]$(function () { $.when().then(function( x ) { alert( "I fired immediately" );});})[/mycode3]

嘗試一下 ?

在多個(gè)延遲對(duì)象傳遞給jQuery.when() 的情況下,該方法返回一個(gè)新的"宿主"延遲對(duì)象,當(dāng)所有的延遲對(duì)象被受理(resolve)時(shí),該方法才會(huì)受理它的宿主延遲對(duì)象。當(dāng)其中有一個(gè)延遲對(duì)象被拒絕(rejected)時(shí),該方法就會(huì)拒絕它的宿主延遲對(duì)象。當(dāng)宿主對(duì)象被受理時(shí),doneCallbacks(受理回調(diào))將被執(zhí)行。

實(shí)例

傳入多個(gè)延遲對(duì)象

[mycode3 type="javascript"]$(function () { var d1 = $.Deferred();var d2 = $.Deferred();$.when( d1, d2 ).done(function ( v1, v2 ) {alert( v1 ); // "Fish"alert( v2 ); // "Pizza"});d1.resolve( "Fish" );d2.resolve( "Pizza" );})[/mycode3]

嘗試一下 ?

如果沒(méi)有值傳遞給延遲對(duì)象的受理(resolved)事件,那么相應(yīng)的doneCallback參數(shù)將是undefined。 如果傳遞給延遲對(duì)象的受理(resolved)事件為單個(gè)的值, 相應(yīng)的參數(shù)將保留那個(gè)值。 在傳遞給延遲對(duì)象的解決(resolved)事件為為多個(gè)值的情況下, 相應(yīng)的參數(shù)將是這些值組成的數(shù)組。

實(shí)例

傳入多個(gè)不同類(lèi)型的延遲對(duì)象

[mycode3 type="javascript"]$(function () { var d1 = $.Deferred();var d2 = $.Deferred();var d3 = $.Deferred();$.when( d1, d2, d3 ).done(function ( v1, v2, v3 ) {alert( v1 ); // v1 is undefinedalert( v2 ); // v2 is "abc"alert( v3 ); // v3 is an array [ 1, 2, 3, 4, 5 ]});d1.resolve();d2.resolve( "abc" );d3.resolve( 1, 2, 3, 4, 5 );})[/mycode3]

嘗試一下 ?

在多個(gè)延遲的情況下,如果延遲對(duì)象之一被拒絕(rejected),jQuery.when()觸發(fā)立即調(diào)用 "宿主" 延遲對(duì)象的 failCallbacks 回調(diào)函數(shù)。

實(shí)例

多個(gè)延遲對(duì)象之一被拒絕時(shí)調(diào)用failCallbacks 回調(diào)函數(shù)

[mycode3 type="javascript"]$(function () { $.when($.ajax("/page1.php"), $.ajax("/page2.php")).then(function(data, textStatus, jqXHR){alert(jqXHR.status); }, function(obj){alert(obj.statusText);});})[/mycode3]

嘗試一下 ?


jQuery 雜項(xiàng)方法jQuery 雜項(xiàng)方法

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)