Estoy haciendo ejercicios de prueba y captura en JavaScript.
aquí está mi código
function getTime1() { return new Promise((resolve, reject) => { setTimeout(() => { resolve(11111); }, 1000); }); } function getTime2() { return new Promise((resolve, reject) => { setTimeout(() => { resolve(22222); }, 1000); }); } async function funB() { // try { let b = await getTime2(); throw "B error"; // } catch (e) { // console.log("this" + e); // } } async function funA() { try { let a = await getTime1(); funB(); } catch (e) { console.log("that" + e); } } funA();y aqui esta el resultado
Error B no capturado (en promesa)
Quiero saber por qué no hay trampa en funb y Funa. Gracias
Según tengo entendido, try/catch no funciona con async:
"Debido a que errorTest es asíncrono, siempre devolverá una promesa y nunca comenzará la ejecución exactamente donde lo llama: es asíncrono. errorTest regresa y sale del bloque de prueba, antes de que se ejecute una sola línea de código dentro de errorTest. Por lo tanto, su bloque catch nunca se activará, porque nada en errorTest arrojaría una excepción sincrónicamente".
Fuente: ¿Por qué try {} .. catch() no funciona con la función async/await?
Dado que async devolverá una Promesa, creo que deberá usar la captura en la Promesa misma
funB().then((result) => { console.log(result); }).catch((error) => { console.error(error); });