Skip to content

JS 中的计时器能做到精确计时吗?为什么?

  • 不行,因为:计算机硬件没有原子钟,使用 cpu 计时器做的 所以 无法做到精确计时
  • 操作系统的计时函数本身就有少量偏差,由于JS 的计时器最终调用的是操作系统的函数,也就携带了这些偏差 比如 windows mac 就不一样 谷歌源码中调用就是针对 mac 和 windows 调用的不同的函数
  • 按照 W3C 的标准,浏览器实现计时器时,如果嵌套层级超过5 层,则会带有 4 毫秒的最少时间,这样在计时时间少于 4 毫秒时又带来了偏差4. 受事件循环的影响,计时器的回调函数只能在主线程空闲时运行
  • 因此又带来了偏差

Welcome to the site