Maison >interface Web >js tutoriel >Comment les erreurs se propagent-elles via les chaînes de promesses JavaScript ?

Comment les erreurs se propagent-elles via les chaînes de promesses JavaScript ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-07 01:21:12749parcourir

How Do Errors Propagate Through JavaScript Promise Chains?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn