javascript - jQuery.Deferred "then"回调给出意外行为

标签 javascript jquery jquery-deferred

Deferred对象被rejected时,then()回调似乎没有触发。我的理解是,无论 Deferred 解析还是拒绝,都应该执行 then()

这是一个示例 ( open in a jsFiddle console )

var doDfd = function(input){
    var dfd = $.Deferred();

    if(input == 'fail'){
        dfd.reject();
    }
    else{
        dfd.resolve();
    }     

    return dfd.promise();
}


doDfd('fail')
    .done(function(r){console.log('success')})
    .fail(function(r){console.log('fail')})
    .then(function(r){console.log('then logic')});
​

最佳答案

deferred.then 接受两个参数 - 一个是完成回调,另一个是失败回调(或回调,因为这些参数中的任何一个都可以是函数数组)。

看到这个 fiddle :http://jsfiddle.net/Mrqf8/480/

关于javascript - jQuery.Deferred "then"回调给出意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5097421/

相关文章:

javascript - 如何使范围 slider 同时适用于数字和颜色?

javascript - 推送到数组不会添加变量的实际值

jquery - select2 - 隐藏搜索框

jquery - 查找带有类的列表项并在 jQuery 中获取其列表位置

Javascript正则表达式从特定单词中获取数字部分

javascript - 如何使用javascript回到网站底部,如回到顶部?

javascript - jquery deferred - "always"在第一次拒绝时调用

jQuery Deferred - 返回调用链上的 promise

jquery - jquery deferred 中的多个 did() ——它是如何工作的?

javascript - 单击时 AngularJS 在 Controller 中更改部分