2011-02-23 2 views
2

Deferred 개체가 reject 인 경우 then() 콜백이 실행되지 않는 것처럼 보입니다. Deferred이 해석되거나 거부되는지 여부는 내 이해 then()이 실행되어야합니다. 여기 jQuery.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')}); 
​ 

답변

4

deferred.then 두 인수 얻어 - 하나가 완료 콜백이고, 또 다른 하나는 콜백 실패 (혹은 콜백 이러한 인자 중 하나가 배열 될 수 있기 때문이다).

이 부분을 참조하십시오. http://jsfiddle.net/Mrqf8/480/