typestar

Temporizadores como promesas en JavaScript

node:timers/promises da esperas e intervalos esperables con await.

import { setTimeout as delay } from "node:timers/promises";
import { setInterval as every } from "node:timers/promises";

const started = Date.now();
await delay(10);
console.log("waited:", Date.now() - started >= 9);

console.log(await delay(1, "with a value"));

let ticks = 0;
for await (const tick of every(2)) {
  ticks += 1;
  if (ticks === 3) break;
}
console.log("ticks:", ticks);

const controller = new AbortController();
setTimeout(() => controller.abort(), 5);
try {
  await delay(100, null, { signal: controller.signal });
} catch (error) {
  console.log("canceled:", error.name);
}

Cómo funciona

  1. El setTimeout de ese módulo devuelve una promesa.
  2. Acepta un AbortSignal, así que una espera es cancelable.
  3. El setInterval de ahí es un iterable asíncrono.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
23
Caracteres a escribir
587
Tokens
160
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 91 segundos.

Escribe este fragmento

Paso 2 de 2 en Eventos y temporizadores; paso 11 de 18 en Node.js.

← Anterior Siguiente →