Latest web development tutorials

jQuery.when() 方法

jQuery 雜項方法 jQuery雜項方法

實例

一個參數傳遞給$.when() 被受理,執行回調函數

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

嘗試一下»

定義和用法

$.when() 函數提供一種方法來執行一個或多個對象的回調函數。

提示:如果向jQuery.when傳入一個延遲對象,那麼會返回它的Promise對象(延遲方法的一個子集)。 可以繼續綁定Promise 對象的其它方法,例如, defered.then 。 當延遲對像已經被受理(resolved) 或被拒絕(rejected)(通常是由創建延遲對象的最初代碼執行的),那麼就會調用相應的回調函數。


語法

$.when( deferreds )

参数 描述
deferreds Deferred类型 一个或多个延迟对象,或者普通的JavaScript对象


實例

更多實例


如果你不傳遞任何參數,jQuery.when()將返回一個resolved(受理)狀態的promise 對象。

實例

不傳遞任何參數,執行回調函數

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

嘗試一下»

在多個延遲對像傳遞給jQuery.when() 的情況下,該方法返回一個新的"宿主"延遲對象,當所有的延遲對像被受理(resolve)時,該方法才會受理它的宿主延遲對象。 當其中有一個延遲對像被拒絕(rejected)時, 該方法就會拒絕它的宿主延遲對象。 當宿主對像被受理時,doneCallbacks(受理回調)將被執行。

實例

傳入多個延遲對象

[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]

嘗試一下»

如果沒有值傳遞給延遲對象的受理(resolved)事件,那麼相應的doneCallback參數將是undefined。 如果傳遞給延遲對象的受理(resolved)事件為單個的值, 相應的參數將保留那個值。 在傳遞給延遲對象的解決(resolved)事件為為多個值的情況下, 相應的參數將是這些值組成的數組。

實例

傳入多個不同類型的延遲對象

[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 undefined alert( 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]

嘗試一下»

在多個延遲的情況下,如果延遲對象之一被拒絕(rejected),jQuery.when()觸發立即調用"宿主" 延遲對象的failCallbacks 回調函數。

實例

多個延遲對象之一被拒絕時調用failCallbacks 回調函數

[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 雜項方法 jQuery雜項方法