jQuery .when() 方法

返回上一级

jQuery $.when() 函数提供一种方法来执行一个或多个对象的回调函数

语法

$.when( deferreds )

参数

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

说明

如果向 jQuery.when 传入一个延迟对象,那么会返回它的 Promise 对象(延迟方法的一个子集)

可以继续绑定 Promise 对象的其它方法,例如, defered.then

当延迟对象已经被受理(resolved)或被拒绝 (rejected) (通常是由创建延迟对象的最初代码执行的),那么就会调用相应的回调函数

范例

一个参数传递给 $.when() 被受理,执行回调函数

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

运行范例 »

更多范例

如果不传递任何参数,jQuery.when() 将返回一个 resolved(受理)状态的 promise 对象

$(function () { 
    $.when().then(function( x ) {
    alert( "I fired immediately" );
    });
})

运行范例 »

在多个延迟对象传递给jQuery.when() 的情况下,该方法返回一个新的"宿主"延迟对象,当所有的延迟对 象被受理(resolve)时,该方法才会受理它的宿主延迟对象

当其中有一个延迟对象被拒绝(rejected)时,该方法就会拒绝它的宿主延迟对象

当宿主对象被受理时,doneCallbacks(受理回调)将被执行

$(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" );
})

运行范例 »

如果没有值传递给延迟对象的受理(resolved)事件,那么相应的 doneCallback 参数 将是undefined

如果传递给延迟对象的受理(resolved)事件为单个的值, 相应的参数 将保留那个值

在传递给延迟对象的解决(resolved)事件为为多个值的情况下, 相应的参数将是这些值组成的数组

$(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 );
})

运行范例 »

在多个延迟的情况下,如果延迟对象之一被拒绝(rejected),jQuery.when()触发立即 调用 "宿主" 延迟对象的 failCallbacks 回调函数。

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

运行范例 »

返回上一级

jQuery 参考手册

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.