3 min read
•Question 16 of 62easyHow do timers work in Node.js?
Understanding setTimeout, setInterval, and setImmediate.
What You'll Learn
- Timer functions
- Clearing timers
- Timer phases in event loop
Timer Functions
code.jsJavaScript
// setTimeout - execute once after delay
const timeout = setTimeout(() => {
console.log('After 1 second');
}, 1000);
// setInterval - execute repeatedly
const interval = setInterval(() => {
console.log('Every 2 seconds');
}, 2000);
// setImmediate - execute after I/O
setImmediate(() => {
console.log('After I/O');
});
// Clear timers
clearTimeout(timeout);
clearInterval(interval);Timer Methods
code.jsJavaScript
const timer = setTimeout(() => {}, 1000);
// Prevent timer from keeping process alive
timer.unref();
// Re-reference timer
timer.ref();
// Refresh timer (reset countdown)
timer.refresh();Async Timers (Node 16+)
code.jsJavaScript
const { setTimeout, setInterval } = require('timers/promises');
// Promise-based setTimeout
await setTimeout(1000);
console.log('After 1 second');
// With value
const result = await setTimeout(1000, 'done');
console.log(result); // 'done'
// Async iteration with setInterval
for await (const _ of setInterval(1000)) {
console.log('Every second');
if (shouldStop) break;
}Execution Order
code.jsJavaScript
setTimeout(() => console.log('timeout'), 0);
setImmediate(() => console.log('immediate'));
// In main module: order is non-deterministic
// In I/O callback: setImmediate always first