"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se pueden manejar errores en devoluciones de llamadas asincrónicas que no están dentro del alcance de una promesa?

¿Cómo se pueden manejar errores en devoluciones de llamadas asincrónicas que no están dentro del alcance de una promesa?

Publicado el 2024-11-04
Navegar:758

How Can You Handle Errors in Asynchronous Callbacks That Are Not Within a Promise\'s Scope?

Manejo de errores asincrónicos con encadenamiento de promesas

Cuando se trabaja con código asincrónico, es crucial considerar cómo manejar los errores de manera efectiva. Las excepciones no detectadas pueden bloquear su aplicación, por lo que es importante contar con una estrategia.

En el escenario descrito, se crea una Promesa con un setTimeout que genera un error. El controlador de captura de Bluebird Promise no detectará este error porque ocurre dentro de una devolución de llamada asincrónica.

Manejo de excepciones dentro de las promesas

Las promesas, sin embargo, pueden detectar excepciones que se lanzan dentro sus propias funciones de devolución de llamada. Para manejar este tipo de error, puede:

function getPromise() {
  return new Promise(function(done, reject) {
    setTimeout(done, 500);
  }).then(function() {
    console.log("hihihihi");
    throw new Error("Oh no!");
  });
}

Aquí, el error se genera dentro de la devolución de llamada, lo que garantiza que será detectado por el controlador de captura de la Promesa.

Advertencias con las devoluciones de llamada asincrónicas

Es fundamental recordar que las promesas no detectan excepciones de devoluciones de llamadas asincrónicas que no están dentro de su propio ámbito. Para manejar este tipo de errores, considere:

  1. Uso de Promise.delay: Promise.delay envuelve una devolución de llamada asincrónica para devolver una Promesa. Cualquier error generado dentro de la devolución de llamada será detectado por la Promesa.
  2. Rechazar la Promesa circundante: Siempre que sea posible, rechace la Promesa que rodea la devolución de llamada asincrónica en lugar de generar una excepción.

Ejemplo de manejo de devoluciones de llamadas asíncronas no autorizadas

Para manejar una devolución de llamadas asíncronas no autorizadas en Node.js o el navegador, puede utilizar el siguiente enfoque:

function getPromise() {
  return new Promise(function(done, reject) {
    setTimeout(function() {
      try {
        // Your rogue async callback here
        console.log("hihihihi");
      } catch (e) {
        reject(e);
      }
    }, 500);
  });
}

Al manejar manualmente cualquier excepción dentro de la devolución de llamada, este enfoque garantiza que no bloquearán su aplicación.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3