bonjour,
j essaye de chainer des promises dans node.js, mais je ne comprends pas le fonctionnement de .catch(), voici mon code:
pour précision:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 var chainedPromise = promise1.then(promise1).then(promise2); if (toto) { chainedPromise = chainedPromise.then(promise3); } chainedPromise .then(promise4) .then(promise5) .then(function() { res.render('/page1'); }) .catch(function() { res.render('/page2'); });
- la plupart des promises font des requêtes a la bdd (avec mongodb)
- certaines utilisent le retour des promises precedente
- certaines de ces promises lancent des exceptions (throw new Error(...)) dans certains cas
je pensais que lancer des exceptions/throw dans une chaine de promises arreterai la chaine et passerait dans le block catch. mais ce qui se passe c est que je passe bien dans le block catch, mais la chaine continue !!!!!! par exemple si promise2 renvoit une exception, alors j execute le block catch mais je me rends compte que toutes les then qui suivent se sont aussi executé!
j ai trouvé sur un autre forum que la solution suivante pourrait marcher:
mais je trouve ca tres tres tres moche lol
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 var chainedPromise = promise1.then(promise2, errorFunction).then(promise3, errorFunction); if (toto) { chainedPromise = chainedPromise.then(promise4, errorFunction); } chainedPromise .then(promise5, errorFunction) .then(promise6, errorFunction) .then(function() { res.render('/page1'); }, errorFunction);
est ce que qqn peut m aider, je ne comprends pas comment gerer les exceptions/reject dans une chaine de promise et toutes les recuperer au meme endroit et sortir de ma chaine ...
merci d avance pour les propositions, maintenant je vais manger parce que ca fait mal a la tete l asynchrone ^^
Partager