"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você pode lidar com erros em retornos de chamada assíncronos que não estão dentro do escopo de uma promessa?

Como você pode lidar com erros em retornos de chamada assíncronos que não estão dentro do escopo de uma promessa?

Publicado em 2024-11-04
Navegar:799

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

Tratamento de erros assíncronos com encadeamento de promessas

Ao trabalhar com código assíncrono, é crucial considerar como lidar com erros de maneira eficaz. Exceções não detectadas podem travar seu aplicativo, por isso é importante ter uma estratégia em vigor.

No cenário descrito, uma promessa é criada com um setTimeout que gera um erro. O manipulador catch do Bluebird Promise não detectará esse erro porque ele ocorre em um retorno de chamada assíncrono. suas próprias funções de retorno de chamada. Para lidar com esse tipo de erro, você pode:

function getPromise() { retornar nova Promessa(função(concluído, rejeitar) { setTimeout(concluído, 500); }).então(função() { console.log("hihihihi"); lançar novo erro("Ah, não!"); }); }

Aqui, o erro é lançado dentro do retorno de chamada then, o que garante que ele será capturado pelo manipulador de captura do Promise.

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

É crucial lembrar que as promessas não capturam exceções de retornos de chamada assíncronos que não estão dentro de seu próprio alcance. Para lidar com esses tipos de erros, considere:

Usando Promise.delay

: Promise.delay encapsula um retorno de chamada assíncrono para retornar uma Promise. Quaisquer erros gerados no retorno de chamada serão capturados pela Promessa.

    Rejeitando a Promessa ao redor
  1. : sempre que possível, rejeite a Promessa em torno do retorno de chamada assíncrono em vez de lançar uma exceção.
  2. Exemplo de tratamento de retornos de chamada assíncronos não autorizados
  3. Para lidar com um retorno de chamada assíncrono não autorizado em Node.js ou no navegador, você pode usar a seguinte abordagem:

função getPromise() { retornar nova Promessa(função(concluído, rejeitar) { setTimeout(função(){ tentar { // Seu retorno de chamada assíncrono desonesto aqui console.log("hihihihi"); } pegar (e) { rejeitar(e); } }, 500); }); }

Ao lidar manualmente com quaisquer exceções no retorno de chamada, essa abordagem garante que elas não travarão seu aplicativo.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3