浏览器中 JS 定时器不准确且后台被节流,如何用 requestAnimationFrame 和 Web Worker 补偿
在开发在线协作白板、实时倒计时、动画播放器或轮询任务时,很多人会发现 setTimeout 和 setInterval 在浏览器里并不准时。页面切到后台、CPU 繁忙、或者显示器刷新率变化时,定时器回调可能延迟几百毫秒甚至更久。这不是 bug,而是浏览器为了省电和减少后台消耗做的主动限制。另外,setInterval 每次回调之间的间隔并不等于你设定的毫秒数,它会受到事件循环、渲染帧和微任务队列的影响。这篇文章从实际开发场景出发,分析定时器被节流的底层原因,并给出用 requestAnimationFrame 做前台精确动画、用 Web Worker 做后台计时补偿的落地代码,最后讨论如何设计...