Skip to content

JS 中的计时器能精确进行吗?

不行, 因为:

  1. 计算机硬件没有原子钟, 无法做到精确计时
  2. 操作系统的计时函数本身就有少量偏差, 由于 JS 的计时器最终调用的是操作系统的函数, 也就携带了这样的偏差
  3. 按照 W3C 的标准, 浏览器实现计时器时, 如果嵌套层级超过 5 层, 则会带有 4ms 的最少时间,这样在计时时间少于 4ms 时又带来了偏差
  4. 受事件循环的影响, 计时器的回调函数只能在主线程空闲时进行, 因此又带来了偏差