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
- El
setTimeoutde ese módulo devuelve una promesa. - Acepta un AbortSignal, así que una espera es cancelable.
- El
setIntervalde ahí es un iterable asíncrono.
Palabras clave y builtins usados aquí
Dateasawaitbreakcatchconstforfromifimportletoftry
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.
Paso 2 de 2 en Eventos y temporizadores; paso 11 de 18 en Node.js.