Maison > interface Web > js tutoriel > le corps du texte

Comment gérer les exceptions non gérées dans les rappels asynchrones avec les promesses Bluebird ?

DDD
Libérer: 2024-10-26 16:39:30
original
1050 Les gens l'ont consulté

How do you handle unhandled exceptions in asynchronous callbacks with Bluebird promises?

Gestion des exceptions asynchrones avec les promesses Bluebird

Q : Comment gérer les exceptions non gérées dans les rappels asynchrones avec les promesses Bluebird ?

Les promesses Bluebird n'attrapent pas intrinsèquement les exceptions lancées par les rappels asynchrones, contrairement aux domaines.

A : Utilisez les constructeurs de promesses ou les fermetures then() pour gérer les exceptions

Pour intercepter les exceptions dans les rappels asynchrones, enveloppez le rappel dans un constructeur de promesse ou la fermeture then() :

<code class="javascript">function getPromise(){
    return new Promise(function(done, reject){
        setTimeout(function(){
            throw new Error("AJAJAJA");
        }, 500);
    }).then(function() {
        console.log("hihihihi");
        throw new Error("Oh no!");
    });
}</code>
Copier après la connexion

Évitez de lancer des rappels asynchrones personnalisés

Jamais lancez des exceptions directement dans les rappels asynchrones personnalisés (en dehors des rappels de promesse). Au lieu de cela, rejetez la promesse environnante :

<code class="javascript">function getPromise(){
    return new Promise(function(done, reject){
        setTimeout(done, 500);
    }).then(function() {
        console.log("hihihihi");
        reject(new Error("Oh no!"));
    });
}</code>
Copier après la connexion

Exemple

Utilisation d'un constructeur de promesse :

<code class="javascript">var p = getPromise();
    p.then(function(){
        console.log("Yay");
    }).error(function(e){
        console.log("Rejected",e);
    }).catch(Error, function(e){
        console.log("Error",e);
    }).catch(function(e){
        console.log("Unknown", e);
    });</code>
Copier après la connexion

Sortie :

Error [Error: Oh no!]
Copier après la connexion

Cette approche garantit que les exceptions sont détectées et traitées de manière appropriée, empêchant ainsi l'application de planter.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal