Je suis encore assez nouveau dans les promesses et j'utilise actuellement bluebird, mais j'ai un scénario où je ne sais pas trop comment y faire face.
Donc, par exemple, j'ai une chaîne de promesses dans une application express comme ceci:
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" });
});
Donc, le comportement que je recherche est:
- Va pour obtenir un compte par ID
- S'il y a un rejet à ce stade, bombardez et renvoyez une erreur
- S'il n'y a pas d'erreur, convertissez le document renvoyé en modèle
- Vérifiez le mot de passe avec le document de base de données
- Si les mots de passe ne correspondent pas, bombardez et renvoyez une erreur différente
- S'il n'y a pas d'erreur, changez les mots de passe
- Puis retourne le succès
- Si quelque chose ne va pas, retournez un 500
Donc, actuellement, les captures ne semblent pas arrêter le chaînage, et cela a du sens, alors je me demande s'il existe un moyen pour moi de forcer d'une manière ou d'une autre la chaîne à s'arrêter à un certain point en fonction des erreurs, ou s'il existe un meilleur moyen. pour structurer cela pour obtenir une forme de comportement de branchement, comme dans le cas de if X do Y else Z
.
Toute aide est la bienvenue.