jQuery.Deferred“then”回调给出了意想不到的行为

时间:2011-02-23 21:30:59

标签: javascript jquery jquery-deferred

then()对象Deferred被编辑时,好像reject回调没有被触发。我的理解then()应该执行Deferred是否解决或拒绝。

以下是一个示例(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')});
​

1 个答案:

答案 0 :(得分:4)

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

看到这个小提琴:http://jsfiddle.net/Mrqf8/480/