Resumen

Domina el módulo timers de Node.js y controla el tiempo de ejecución con precisión: programa tareas, repítelas o cancélalas según el ciclo de vida de tu aplicación. Aquí verás cómo usar la API global de timers con ejemplos claros y código listo para copiar.

¿Qué resuelve el módulo timers en Node.js?

El módulo timers proporciona funciones globales para programar lógica por tiempo: ejecución única, repetición y siguiente iteración del bucle de eventos. A diferencia del navegador, en Node.js el flujo se integra con su ciclo de vida y el event loop.

  • Funciones claves: setTimeout, setInterval, setImmediate, clearTimeout, clearInterval.
  • Identificadores: cada timer devuelve un id que permite cancelarlo.
  • Observabilidad: imprimir la hora con console.log y Date ayuda a entender el orden real de ejecución.

¿Cómo programar y cancelar tareas con timers?

A continuación, una secuencia compacta que muestra programación por tiempo, repetición y cancelación. Observa el orden de impresión de mensajes y la hora para entender el flujo asíncrono.

¿Cómo usar setTimeout para una ejecución única?

  • Ejecuta una función una sola vez después de un retraso en milisegundos.
  • No se imprime de inmediato: espera el tiempo indicado.
console.log('hora actual:', new Date().toLocaleTimeString());

const timeoutId = setTimeout(() => {
  console.log('este mensaje aparece después de dos segundos.');
}, 2000);

¿Qué hace setImmediate en la próxima iteración del bucle?

  • Programa la ejecución en la siguiente iteración del event loop.
  • Útil para diferir lógica sin esperar milisegundos específicos.
setImmediate(() => {
  console.log('este mensaje aparece en la próxima iteración del bucle.');
});

¿Cómo cancelar timers con clearInterval y clearTimeout?

  • Repite con setInterval y cancela con clearInterval usando su id.
  • Evita que un timeout ocurra con clearTimeout antes de que dispare.
// Repetición cada 3 segundos.
const intervalId = setInterval(() => {
  console.log('este mensaje aparece cada tres segundos.');
}, 3000);

// Cancelar el intervalo después de 10 segundos.
setTimeout(() => {
  console.log('cancelar el intervalo después de diez segundos.');
  clearInterval(intervalId);
}, 10000);

// Programar un timeout que nunca se mostrará.
const willBeClearedId = setTimeout(() => {
  console.log('este mensaje nunca aparecerá.');
}, 10000);

// Cancelar inmediatamente para que no llegue a ejecutarse.
clearTimeout(willBeClearedId);

console.log('hora final:', new Date().toLocaleTimeString());

¿Qué observar en el flujo de tiempo y el bucle de eventos?

Usar hora inicial y hora final facilita ver el orden real de ejecución y cómo interactúan los timers con el event loop.

  • La hora final puede imprimirse antes que mensajes programados: el flujo principal termina, luego corren los timers.
  • El mensaje de dos segundos aparece después del retraso: confirma la ejecución única de setTimeout.
  • El mensaje de la próxima iteración aparece casi de inmediato tras cargar el programa: comportamiento de setImmediate.
  • El intervalo se repite cada tres segundos hasta ser cancelado a los diez segundos: evidencia de clearInterval funcionando.
  • El timeout cancelado nunca se imprime: clearTimeout evita su ejecución futura.

Estos patrones permiten programar notificaciones, tareas diferidas y cancelaciones seguras según el estado de tu aplicación en Node.js.

¿Tienes dudas o un caso de uso con timers en Node.js? Cuéntalo y afinamos la estrategia juntos.