2014-11-21 4 views
0

A()가 해결 된 약속을 반환하고 B()로 이동한다고 가정 해 보겠습니다. 그러나 어떤 상황에서는 B()가 끝나기 전에 다음()() (C()에 들어가기를 원하지 않습니다.) B() 메서드 내에서 defered.reject 잘 보이지 않는다.Q와 체인 연결 약속

var p = pull(target) 
.then(function (data) { 
    return A(); 
}) 
.then(function (data) { 
    return B(); 
}) 
.then(function (data) { 
    return C(); 
}) 

어떤 힌트를?

답변

5

약속 분기 할 수 귀하의 방법은 동일이없이 그대로 그들 - if 조건으로 대부분 :

var p = pull(target) 
.then(A).then(B) 
.then(function (data) { 
    if(data) return C(); // assuming B's resolution value is a boolean 
}); 
0

어떻게 단지 같은 다음 방법 내부를 포장에 대한?

var p = pull(target) 
      .then(function(data) { 
       return A(); 
      }) 
      .then(function(data) { 
       var result = B(); 
       if (!result) 
        return C() 
       return result; 
      }) 
+0

B는 약속이 아니라 부울을 반환합니다. –