Node.js
Timers y scheduling
Timers y scheduling en Node.js: setTimeout, setInterval, setImmediate, microtasks, orden de ejecución, drift y cancelación de tareas programadas.
- Última actualización
- Actualizada
- Nivel
- Fundamentos
Node.js
Timers y scheduling en Node.js: setTimeout, setInterval, setImmediate, microtasks, orden de ejecución, drift y cancelación de tareas programadas.
setTimeout(runOnce, 500);
const interval = setInterval(runRepeatedly, 1000);
setImmediate(runAfterPoll);setTimeout: una oportunidad futura.setInterval: repetición aproximada.setImmediate: fase check del event loop.import { setTimeout as delay } from "node:timers/promises";
await delay(500, undefined, { signal });Permite espera cancelable con Promises.
Un timer puede ejecutarse tarde por:
nextTick excesivos.async function loop() {
while (!signal.aborted) {
const started = Date.now();
await runJob();
await delay(Math.max(0, 1000 - (Date.now() - started)), undefined, { signal });
}
}setInterval puede solapar trabajo async si una ejecución tarda más que el intervalo. Un loop controlado evita concurrencia accidental.
Un timer referenciado mantiene vivo el proceso. timer.unref() permite que el proceso termine si no queda otro trabajo.
Úsalo para tareas auxiliares, no para trabajo que debe completarse obligatoriamente.
Si el proceso se reinicia, los timers desaparecen. Trabajos críticos necesitan persistencia, idempotencia y un scheduler externo o cola.
setInterval con callbacks async sin control.setImmediate y setTimeout(0) no tienen orden universal.¿Por qué un setInterval puede ejecutar dos trabajos simultáneos?
Porque el intervalo programa nuevas callbacks aunque la Promise iniciada por la ejecución anterior todavía no haya terminado.
Networking: TCP, DNS y TLS lleva estos conceptos a conexiones reales.