Saya masih cukup baru dalam promise dan saya menggunakan bluebird saat ini, namun saya memiliki skenario di mana saya tidak begitu yakin bagaimana cara terbaik untuk menghadapinya.
Jadi misalnya saya memiliki rantai janji dalam aplikasi ekspres seperti:
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" });
});
Jadi perilaku yang saya kejar adalah:
- Pergi untuk mendapatkan akun dengan Id
- Jika ada penolakan pada saat ini, bom dan kembalikan kesalahan
- Jika tidak ada kesalahan, ubah dokumen dikembalikan ke model
- Verifikasi kata sandi dengan dokumen database
- Jika kata sandi tidak cocok maka bom dan kembalikan kesalahan yang berbeda
- Jika tidak ada kesalahan, ubah kata sandi
- Kemudian kembalikan kesuksesan
- Jika ada yang salah, kembalikan 500
Jadi saat ini tangkapan tampaknya tidak menghentikan rantai, dan itu masuk akal, jadi saya bertanya-tanya apakah ada cara bagi saya untuk memaksa rantai berhenti pada titik tertentu berdasarkan kesalahan, atau jika ada cara yang lebih baik untuk menyusun ini untuk mendapatkan beberapa bentuk perilaku percabangan, seperti halnya kasus if X do Y else Z
.
Bantuan apa pun akan sangat bagus.