$.when()
jQuery.when() 方法
一个参数传递给 $.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]
传入多个延迟对象
示例
[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]
传入多个不同类型的延迟对象
示例
[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]
多个延迟对象之一被拒绝时调用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]