相关疑难解决方法(0)

jQuery Deferred,$ .when()和fail()回调参数

$.when()当其中一个延迟操作不成功时使用时,我得到一个意外的结果.

拿这个JavaScript,创建2个延迟.第一个成功,第二个失败.

var f1 = function() {
    return $.Deferred(function(dfd) {
        dfd.resolve('123 from f1');
    }).promise();
};

var f2 = function() {
    return $.Deferred(function(dfd) {
        dfd.reject('456 from f2');
    }).promise();
};

$.when(f1(), f2())
    .then(function(f1Val, f2Val) {
        alert('success! f1, f2: ' + JSON.stringify([f1Val, f2Val]));
    })
    .fail(function(f1Val, f2Val) {
        alert('fail!    f1, f2: ' + JSON.stringify([f1Val, f2Val]));
    });
Run Code Online (Sandbox Code Playgroud)

自己运行:http://jsfiddle.net/r2d3j/2/

我明白了 fail! f1, f2: ["456 from f2", null]

问题是在.fail()回调中,随f2()拒绝传递的值被路由到第一个参数,我希望在那里f1Value.这意味着我真的没有办法知道哪个延迟对象实际发布了这个reject(),而且我也不知道故障数据实际属于哪个操作.

我原以为这.fail()会得到参数,null, '456 from …

javascript jquery jquery-deferred

23
推荐指数
2
解决办法
2万
查看次数

标签 统计

javascript ×1

jquery ×1

jquery-deferred ×1