Maison > interface Web > js tutoriel > Comment les promesses gèrent-elles les erreurs et les propagent-elles à travers une chaîne ?

Comment les promesses gèrent-elles les erreurs et les propagent-elles à travers une chaîne ?

Linda Hamilton
Libérer: 2024-12-04 04:12:16
original
201 Les gens l'ont consulté

How Do Promises Handle Errors and Propagate Them Through a Chain?

Comprendre le chaînage des promesses et la gestion des erreurs

Les promesses fournissent un mécanisme de gestion des opérations asynchrones en permettant aux développeurs de les enchaîner et de transmettre les erreurs ou les résultats. Cependant, il est important de comprendre comment les promesses gèrent les erreurs pour les exploiter efficacement.

Chaînage des promesses et rejet des erreurs

Dans l'exemple fourni :

promise1.then(...)
promise2.then(...)
promise3.then(...)
Copier après la connexion

Chacune ne le fait alors pas impliquent une dépendance à la résolution réussie de la promesse précédente. Au lieu de cela, cela implique une dépendance à la résolution de la promesse précédente, qu'elle soit remplie ou rejetée.

Gestion des erreurs dans les promesses

La gestion des erreurs n'est pas gérée automatiquement dans les promesses. Il est de la responsabilité du développeur d'attacher des gestionnaires d'erreurs à chacun s'il souhaite gérer les erreurs.

Dans l'exemple, promise1 gère les erreurs, mais promise2 et promise3 ne le font pas. Par conséquent, lorsque d1 rejette avec une erreur, promise1 enregistre l'erreur et la renvoie, mais promise2 et promise3 reçoivent le résultat du gestionnaire d'erreurs de promise1 (qui n'est pas défini) et le traitent comme une promesse tenue.

Pour gérer les erreurs correctement, il faut :

  • Attacher explicitement des gestionnaires d'erreurs à chaque opération then.
  • Relancer l'erreur dans le gestionnaire d'erreurs si elle doit se propager aux promesses suivantes.
  • Vous pouvez également renvoyer une promesse rejetée pour rejeter la promesse suivante.

Chaînage de promesses vs propagation d'erreurs

C'est il est erroné de supposer que le chaînage des promesses propage automatiquement les erreurs. Si une erreur n’est pas explicitement gérée et re-propagée, les promesses ultérieures ne la recevront pas. C'est pourquoi les gestionnaires d'erreurs sont essentiels dans les promesses.

Exemple avec re-propagation d'erreur

Pour propager correctement l'erreur, l'exemple peut être modifié comme suit :

var d1 = d();

var promise1 = d1.promise.then(
    function(wins) { return wins;},
    function(err) { throw err;});
var promise2 = promise1.then(
    function(wins) { return wins;},
    function(err) { throw err;});
var promise3 = promise2.then(
    function(wins) { return wins;},
    function(err) { throw err;});

d1.reject(new Error());
Copier après la connexion

Avec cette modification, l'erreur se propage à travers la chaîne, et toutes les promesses seront rejeter.

Conclusion

Comprendre comment les promesses gèrent les erreurs est crucial pour une gestion efficace des erreurs dans les opérations asynchrones. Il est essentiel d'attacher explicitement les gestionnaires d'erreurs, de renvoyer les erreurs pour les propager ou de renvoyer les promesses rejetées pour gérer correctement les échecs et maintenir l'intégrité de la chaîne de promesses.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal