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.
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:',newDate().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:',newDate().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.
Si ya aprendimos que hay un console.time, porque no usarlo?
console.time('timeout');setTimeout(()=>{console.log('Timeout body message');console.timeEnd('timeout');},2000);```console.time('timeout');setTimeout(()=>{console.log('Timeout body message');console.timeEnd('timeout');},2000);
Me parece que la explicación de por qué la hora final aparece justo después del primer log no es clara. Para entender mejor cómo funciona el asincronismo en Javascript, comparto esta increíble explicación sobre el Event Loop y su interacción con el Callback Queue, el Call Stacks y las APIs:
Gran video. Gracias por ese aporte 👍🏼
Parce muy buen video, y aqui esta el link de "loupe" la herramienta que usaron en el video
La explicación al final de la clase no me pareció clara. Quizás no quiso complicar más el final de la clase pero el event loop En Javascript es un concepto muy importante
Este vídeo es super bueno para entender mejor lo que sucedió:
Para todos aquellos que no se acuerdan muy bien o de plano no saben respecto al tema del asincronismo en JS y el event loop, aquí les dejo un artículo que lo explica claramente, se enfoca en como se maneja en el navegador, pero al entenderlo allí, es mas fácil entenderlo en NodeJS: