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

Comment puis-je gérer les exceptions asynchrones avec Bluebird Promises ?

DDD
Libérer: 2024-10-26 04:36:02
original
788 Les gens l'ont consulté

How Can I Handle Asynchronous Exceptions with Bluebird Promises?

Gestion des exceptions asynchrones avec Bluebird Promises

Lorsque vous travaillez avec des routines asynchrones, la gestion des exceptions peut être difficile à gérer. Les promesses, une fonctionnalité clé de Bluebird.js, fournissent un moyen structuré de gérer les exceptions asynchrones.

Le défi

Dans votre exemple de code, un setTimeout est utilisé dans un rappel sans promesse. Lorsqu'une erreur est générée dans ce rappel, le catch de Bluebird ne sera pas déclenché, provoquant le crash du programme.

Structure de promesse de Bluebird

Les promesses interceptent les exceptions lancées dans leur rappel fonctions (constructeur then/catch/Promise). Pour gérer les exceptions des rappels asynchrones, il est crucial de les envelopper dans une promesse.

Gestion élégante des exceptions

Dans votre scénario, vous pouvez inclure le rappel setTimeout dans une promesse . Le bloc catch détectera alors l'erreur :

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

Le rejet est la clé

Ne lancez jamais d'erreurs directement dans les rappels sans promesse. Au lieu de cela, rejetez la promesse environnante. Si nécessaire, utilisez try-catch pour garantir une gestion appropriée.

<code class="javascript">function getPromise() {
  return new Promise(function(resolve, reject) {
    try {
      setTimeout(resolve, 500);
    } catch (err) {
      reject(err);
    }
  });
}</code>
Copier après la connexion

En adhérant à ces principes, vous pouvez garantir une gestion gracieuse des exceptions dans Node.js et dans le navigateur, même pour les rappels asynchrones malveillants.

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