Maison >interface Web >js tutoriel >Comment les erreurs se propagent-elles via les chaînes de promesses JavaScript ?
Promesses enchaînées : comprendre la propagation des erreurs
Dans une chaîne de promesses, la résolution ou le rejet de chaque promesse peut affecter les promesses suivantes. Cependant, il existe une idée fausse courante selon laquelle les erreurs doivent toujours se propager à travers la chaîne.
Comportement de la chaîne de promesse
Lorsqu'une promesse est résolue ou rejetée, elle déclenche ses rappels. . Le gestionnaire de réussite ou d'erreur peut renvoyer une valeur ou une promesse, qui devient la résolution de la prochaine promesse de la chaîne.
Gestion des erreurs dans les promesses
Si le gestionnaire d'erreurs dans une chaîne de promesses ne renvoie pas l'erreur ou ne renvoie pas une promesse rejetée, l'erreur ne sera pas propagée aux promesses suivantes. En effet, la chaîne considère l'erreur comme gérée dans le cadre de cette promesse.
Propagation et gestion des erreurs
Dans l'exemple de module de nœud différé que vous avez fourni, l'erreur n'est pas propagé à promise2 car le gestionnaire d’erreurs dans promise1 ne renvoie pas l’erreur. En ne renvoyant pas l'erreur, cela signale à la chaîne que l'erreur a été traitée. Pour propager l'erreur, vous devrez modifier le code comme suit :
promise1.then( function(wins) { console.log('promise1 resolved'); return wins;}, function(err) { console.log('promise1 rejected'); throw err;}); // re-throw error
Relancer les erreurs et gestion des erreurs
Relancer l'erreur est analogue pour transmettre la "note d'erreur" de John à Ginger à Bob. Si Ginger gère l'erreur (c'est-à-dire ne la relance pas), elle peut toujours répondre à la demande de Bob avec un élément différent (par exemple, un widget vert). Cela correspond à l'idée selon laquelle la gestion des erreurs dans une promesse ne consiste pas strictement à propager l'erreur, mais également à atténuer son impact.
Dans l'exemple de base de données, si la requête initiale échoue, le gestionnaire d'erreurs de la première promesse La chaîne doit renvoyer l'erreur pour la propager aux promesses suivantes. Sinon, la chaîne considérera l'erreur comme gérée et poursuivra l'autre insertion.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!