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

Comment les promesses de Bluebird peuvent-elles résoudre le défi de la gestion asynchrone des exceptions dans Node.js ?

Susan Sarandon
Libérer: 2024-10-26 00:57:27
original
596 Les gens l'ont consulté

How Can Bluebird Promises Solve the Challenge of Asynchronous Exception Handling in Node.js?

Gestion des exceptions asynchrones avec Bluebird Promises : découvrir l'énigme

Lors de la gestion de scénarios asynchrones, il est crucial d'empêcher le nœud de planter à cause de rappels malveillants. Dans cet article, nous explorerons les meilleures pratiques d'utilisation des promesses Bluebird pour relever ce défi.

Gestion des exceptions avec délais d'attente

Considérez le scénario suivant :

function getPromise() {
  return new Promise((done, reject) => {
    setTimeout(() => {
      throw new Error("AJAJAJA");
    }, 500);
  });
}

...
Copier après la connexion

En lançant une exception dans setTimeout, nous contournons le mécanisme de gestion des erreurs de Bluebird et plantons le programme. Cependant, si l'exception se produit avant setTimeout, Bluebird la capture avec succès :

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

Cela démontre que les promesses n'interceptent pas les exceptions des rappels asynchrones. Au lieu de cela, ils gèrent les erreurs uniquement dans leurs rappels de constructeur ou dans leurs rappels then/catch.

La solution : gestion des erreurs dans les rappels asynchrones

Pour éviter les plantages de nœuds, ne lancez jamais d'erreurs dans les rappels asynchrones personnalisés. Au lieu de cela, rejetez la promesse environnante. Considérez la modification suivante :

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

En utilisant then pour encapsuler l'opération asynchrone, nous pouvons désormais gérer l'erreur dans le rappel Bluebird.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!