2014-11-30 3 views
1

내가 아래에있는 것과 같은 약속 체인을 가지고 있다고 상상해보십시오. func2가 호출되면 func3 또는 func4가 모두 호출되는 것을 피하고 싶습니다.Propagating에서 JavaScript 약속 멈추기

AsyncFunction() 
.then(func1, func2) 
.then(func3, func4) 

현재 func2에 오류가 발생하면 func4가 호출됩니다. func2에서 값을 반환하면 func3이 호출 된 것 같습니다.

저는 Angular $ q를 사용하고 있습니다.

답변

3

분기 제어 흐름에 중첩을 사용합니다. 귀하의 경우에는 다음과 같이 표시됩니다.

AsyncFunction().then(function(res) { 
    return func1(res).then(func3, func4); 
}, func2); 
+0

답변 해 주셔서 감사합니다. 중첩없이이 문제를 해결할 수있는 방법이 있는지 알고 계십니까? 일부 시나리오에서는 상당히 엉망이 될 수 있습니다. – inperspective

+0

아니요. 구조화 프로그래밍에서는 분기와 같은 용도로 항상 중첩을 사용합니다. 간단한 'if'문을 고려하십시오. 일들이 너무 복잡해지면 그것들을 자신의 기능으로 옮기십시오. – Bergi

+0

아, 나는 그것을 잘못 읽었다 - 당신은 절대적으로 정확합니다. –