2011-02-23 72 views
2

看起來好像then()回調未觸發時Deferred對象是reject編輯。這是我的理解then()是否Deferred解決或拒絕應執行。jQuery.Deferred「then」callback given unexpected behavior

下面是一個例子(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')}); 
​ 

回答

4

deferred.then有兩個參數 - 一個是完成回叫,另一種是一個失敗回調(或回調因爲任何的這些參數可以是數組的功能)。

看這個小提琴:http://jsfiddle.net/Mrqf8/480/