나는 아직 약속에 상당히 익숙하지 않고 현재 블루 버드를 사용하고 있지만 어떻게 최선을 다해야할지 잘 모르겠습니다.
예를 들어 다음과 같은 익스프레스 앱 내에 약속 체인이 있습니다.
repository.Query(getAccountByIdQuery)
.catch(function(error){
res.status(404).send({ error: "No account found with this Id" });
})
.then(convertDocumentToModel)
.then(verifyOldPassword)
.catch(function(error) {
res.status(406).send({ OldPassword: error });
})
.then(changePassword)
.then(function(){
res.status(200).send();
})
.catch(function(error){
console.log(error);
res.status(500).send({ error: "Unable to change password" });
});
그래서 내가 추구하는 행동은 다음과 같습니다.
- ID로 계정을 가져갑니다.
- 이 시점에서 거부가 있으면 폭탄을 터 뜨리고 오류를 반환합니다.
- 오류가 없으면 반환 된 문서를 모델로 변환합니다.
- 데이터베이스 문서로 비밀번호 확인
- 비밀번호가 일치하지 않으면 폭탄을 터 뜨리고 다른 오류를 반환합니다.
- 오류가 없으면 암호를 변경하십시오
- 그런 다음 성공 반환
- 다른 문제가 있으면 500을 반환하십시오.
그래서 현재 캐치가 체인을 멈추지 않는 것 같고 말이됩니다. 그래서 어떻게 든 오류에 따라 특정 지점에서 체인을 멈추게하는 방법이 있는지, 아니면 더 좋은 방법이 있는지 궁금합니다. 의 경우와 같이 분기 동작의 형태를 얻기 위해 이것을 구조화합니다 if X do Y else Z
.
어떤 도움이라도 좋을 것입니다.