私はまだプロミスにかなり慣れておらず、現在はbluebirdを使用していますが、どのように対処すればよいかよくわからないというシナリオがあります。
たとえば、次のようなExpressアプリ内にプロミスチェーンがあります。
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
ます。
どんな助けでも素晴らしいでしょう。