Node 的定时器精度如何?setTimeout、setInterval 有什么坑?
setTimeout(fn, 0)实际延迟约 1ms(小于 1 会被提升到 1),且受 Event Loop 阶段调度影响,不准setInterval的回调不会累加排队:若单次执行超过间隔,下一次会「紧随」执行甚至丢帧;长时间任务建议用「递归 setTimeout」替代以保证间隔- 未清理的
setInterval会阻止进程退出(持有事件循环),必须在不再需要时clearInterval setImmediate在 poll 阶段之后、setTimeout之前(I/O 回调内)触发
// 更稳定:递归 setTimeout 保证「完成后才等下一个间隔」
function tick() {
doWork()
setTimeout(tick, 1000)
}