typestar

Los cuatro combinadores en JavaScript

all, allSettled, race y any difieren en qué cuenta como terminado.

const quick = (value, ms) =>
  new Promise((resolve) => setTimeout(() => resolve(value), ms));
const failing = (ms) =>
  new Promise((_, reject) => setTimeout(() => reject(new Error("boom")), ms));

async function main() {
  console.log(await Promise.all([quick("a", 5), quick("b", 1)]));

  const settled = await Promise.allSettled([quick("ok", 1), failing(2)]);
  console.log(settled.map((r) => r.status));

  console.log(await Promise.race([quick("fast", 1), quick("slow", 20)]));
  console.log(await Promise.any([failing(1), quick("survivor", 5)]));

  try {
    await Promise.all([quick("a", 1), failing(2)]);
  } catch (error) {
    console.log("all rejected:", error.message);
  }
}

main();

Cómo funciona

  1. all se rechaza con la primera falla; allSettled nunca se rechaza.
  2. race se establece con la primera que se establezca, con éxito o sin él.
  3. any espera el primer éxito y se rechaza solo si todas fallan.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
22
Caracteres a escribir
670
Tokens
235
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 148 segundos.

Escribe este fragmento

Paso 5 de 5 en Promesas; paso 5 de 19 en Promesas y async.

← Anterior Siguiente →