Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

132
Visualizações
lanzando UnhandledPromiseRejection incluso el código envuelto en try catch

Recibo el error UnhandledPromiseRejection, incluso envolví el código en el bloque Try Catch que uso await Prmomise.todos juntos aquí

 const express = require('express'); const app = express(); const port = 3003; function testPromise(n) { return new Promise(async (res, rej) => { console.log(n); if (n > 10) { res(true); } else { setTimeout(() => { rej(n);; }, 1000) } }); } function test2(n) { return new Promise(async (res, rej) => { console.log(n); if (n > 10) { res(true); } else { setTimeout(() => { rej(n);; }, 10000) } }); } async function allCall(p) { await Promise.all(p); } app.get('/', async (req, res) => { try { let a = []; let b = []; a.push(testPromise(1)); await test2(1); a.push(testPromise(12)); // await Promise.all(a.map(m => m.then(() => { }).catch(err => { }))); await Promise.all(a); res.send('Hello World!'); } catch (err) { console.log('err'); console.log(err); res.status(400).send('xxxxxxxxxx!') } }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })

No estoy seguro de por qué está arrojando el error.

[Rechazo de promesa no controlada: este error se originó al lanzar dentro de una función asíncrona sin un bloque catch, o al rechazar una promesa que no se manejó con .catch().

Por favor, explique por qué y cómo resolver esto.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Está recibiendo este error porque se rechazan 2 promesas, pero try/catch solo maneja una. La segunda promesa es rechazada pero no manejada.

1er rechazo: a.push(testPromise(1));

2º rechazo: await test2(1);

NOTA:

  • Ambas promesas se inician en paralelo.

  • try/catch solo funciona con async/await, si escribe promesa dentro de try/catch, no será manejado por el bloque catch.

     try { Promise.reject("Something") } catch (error) { console.log('Not here'); } // Unhandled promise rejection

Explicación:

  1. Cuando envía una promesa a una matriz a.push(testPromise(1)); , inicia la ejecución y rechaza después de 1 segundo. Va a atrapar.
  2. al mismo tiempo, también comenzó la segunda promesa await test2(1); porque no está esperando que la primera promesa se resuelva/rechace. Será rechazado después de 1 segundo y no será manejado por el bloque catch. irá a catch solo si usa con await. Si desea manejar el primer rechazo, debe usar .catch . después de 10 segundos, la segunda promesa es rechazada y manejada por el bloque catch.

Solución

 const r = await testPromise(1); await test2(1);

Otra solución:

 async (req, res) => { try { // a.push(testPromise(1)); await test2(1); let a = [testPromise(1), testPromise(12)]; await Promise.all(a); console.log("done"); } catch (err) { console.log("err"); console.log(err); } };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda