Errores en funciones async en JavaScript
await convierte un rechazo en un throw, así que try/catch vuelve a funcionar.
async function load(lang) {
if (!lang) throw new RangeError("lang is required");
return { lang, steps: 45 };
}
async function main() {
try {
console.log(await load("javascript"));
await load("");
} catch (error) {
console.log(error.name, error.message);
} finally {
console.log("finished");
}
const settled = await load("go").catch(() => null);
console.log(settled?.lang);
const results = await Promise.allSettled([load("a"), load("")]);
console.log(results.map((r) => r.status));
}
main();
Cómo funciona
- Una función async siempre devuelve una promesa.
- Un throw adentro se convierte en un rechazo.
- Olvidar
awaitantes de una llamada que se rechaza pierde el error.
Palabras clave y builtins usados aquí
Promiseasyncawaitcatchconstfinallyfunctionifreturnthrowtry
El intento, en números
- Líneas
- 23
- Caracteres a escribir
- 494
- Tokens
- 155
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 93 segundos.
Paso 2 de 4 en async y await; paso 7 de 19 en Promesas y async.