Maison > interface Web > js tutoriel > Comment les promesses enchaînées gèrent-elles et propagent-elles les rejets ?

Comment les promesses enchaînées gèrent-elles et propagent-elles les rejets ?

Linda Hamilton
Libérer: 2024-12-09 07:11:07
original
1007 Les gens l'ont consulté

How Do Chained Promises Handle and Propagate Rejections?

Les promesses enchaînées ne réussissent pas le rejet

Dans une chaîne de promesses, la résolution d'une promesse dépend de la façon dont ses fonctions de gestionnaire d'erreurs répondent à un rejet. La méthode .then() renvoie une nouvelle promesse pour le résultat de la fonction de rappel. Si aucun gestionnaire de succès ou d'erreur n'est fourni, le résultat sera transmis directement à la promesse suivante.

Si l'erreur est gérée, la promesse résultante se réalisera avec la valeur renvoyée par le gestionnaire d'erreurs. Pour renvoyer l'erreur et la propager dans la chaîne, lancez err à la place.

Dans l'exemple de la boutique de widgets, lorsqu'une promesse de la chaîne reçoit une erreur, elle doit la lancer pour garantir que les promesses suivantes dans la chaîne ne reçoit pas de valeur de réussite.

Dans une chaîne de requêtes de base de données, si une erreur se produit dans la première requête, l'omission du gestionnaire d'erreur permettra à la chaîne de continuer, même si les promesses suivantes peut ne pas recevoir de valeurs significatives.

db.query({ parent_id: value }).then(function(query_result) {
    return db.put({
        parent_id: query_result[0].parent_id
    });
}).then(function(first_value_result) {
    return db.put({
        reference_to_first_value_id: first_value_result.id
    });
}.then(values_successfully_entered);
Copier après la connexion

En résumé, pour empêcher les promesses ultérieures d'une chaîne de recevoir des valeurs de réussite après un rejet, la fonction de gestionnaire d'erreurs doit soit générer l'erreur, soit renvoyer une promesse rejetée.

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