Tengo dos promesas sin bloques catch al principio y estoy esperando en ambas más tarde con bloques catch . Segunda promesa reject antes de la primera promesa resolve . Entonces, mientras todavía estoy await la primera promesa, la segunda promesa es reject y dado que aún no adjunté la catch , bloquea el servidor con UnhandledPromiseRejection .
¿Hay alguna manera de hacer que el reject de p2 se propague para await p2 , como lo hace en caso de que p2 resolve s?
PD: No puedo adjuntar el retén al principio.
Agregar el código a continuación para referencia. En stackoverflow funciona bien por alguna razón, pero cuando se ejecuta desde local, el servidor falla.
async function main() { console.log("starting"); let p1 = new Promise((resolve, reject) => { console.log('p1 sleeping'); setTimeout(function() { console.log('p1 awake'); resolve('p1 resolved'); }, 5000); }); let p2 = new Promise((resolve, reject) => { console.log('p2 sleeping'); setTimeout(function() { console.log('p2 awake'); reject('p2 rejected'); //IMPORTANT }, 1000); }); //Below line takes 5 seconds to execute. //But p2 throws error after 1 second because no .catch() is attached to it yet. let out1 = await p1.catch(e => { console.log('p1 errored', e) }); console.log('p1 output', out1); let out2 = await p2.catch(e => { console.log('p2 errored', e) }); console.log('p2 output', out2); } main().then(() => { console.log('stopped') });Si ejecuta su código en la consola de desbordamiento de pila, aún arroja un UnhandledPromiseRejection de promesa no controlada porque no está manejando el rechazo de la promesa (puede ver el error en las herramientas de desarrollo de su navegador).
Debería intentar usar Promise.all o manejar cada resultado de Promise con then() y catch() .