如何实现比 setTimeout 快 80 倍的定时器?
本文首发公众号「前端从进阶到入院」,欢迎关注! 起因 很多人都知道,setTimeout 是有最小延迟时间的,根据 MDN 文档 setTimeout:实际延时比设定值更久的原因:最小延迟时间 中所说: 在浏览器中,setTimeout()/setInterval() 的每调用一次定时器的最小间隔是 4ms,这通常是由于函数嵌套导致(嵌套层级达到一定深度)。 在 HTML Standard 规范中也有提到更具体的: Timers can be nested; after five such nested timers, however, the interval is forced to be at least four milliseconds. 简单来说,5 层以上的定时器嵌套会导致至少 4ms 的延迟。 用如下代码做个测试: let a = performance.now(); setTimeout(() => { let b = performance.now(); console.log(b - a); setTimeout(() => { let c = per...
