typestar

Secuencial o paralelo en JavaScript

Dos await seguidos esperan dos veces; iniciar ambos primero, no.

const work = (name, ms) =>
  new Promise((resolve) => setTimeout(() => resolve(name), ms));

async function sequential() {
  const started = Date.now();
  await work("a", 20);
  await work("b", 20);
  return Date.now() - started;
}

async function parallel() {
  const started = Date.now();
  const [first, second] = await Promise.all([work("a", 20), work("b", 20)]);
  return [Date.now() - started, first, second];
}

async function main() {
  console.log("sequential ms >= 40:", (await sequential()) >= 39);
  const [elapsed] = await parallel();
  console.log("parallel ms < 40:", elapsed < 39);
}

main();

Cómo funciona

  1. await a(); await b(); es secuencial, y a menudo un bug.
  2. Inicia las promesas y luego espéralas juntas.
  3. La diferencia de tiempos es toda la gracia de Promise.all.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
23
Caracteres a escribir
586
Tokens
179
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 107 segundos.

Escribe este fragmento

Paso 3 de 4 en async y await; paso 8 de 19 en Promesas y async.

← Anterior Siguiente →