typestar

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

  1. Una función async siempre devuelve una promesa.
  2. Un throw adentro se convierte en un rechazo.
  3. Olvidar await antes de una llamada que se rechaza pierde el error.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 4 en async y await; paso 7 de 19 en Promesas y async.

← Anterior Siguiente →