timer();
而我们如果在 setTimeout 还未执行期间加入一些额外的代码逻辑,再来看看这个差值。
…
window.setTimeout(function() { instance(); }, speed);
for(var x=1, i=0; i<10000000; i++) { x *= (i + 1); }
}
…
可以看出,这大大加剧了误差。
可以看到随着时间的推移, setTimeout
实际执行的时间和理想的时间差值会越来越大,这就不是我们预期的样子。类比真实的场景,对于一些倒计时以及动画来说都会造成时间的偏差都是不理想的。
那么,从这个现象 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 来看一下,为什么 setTimeout
会不准时呢?
因为我们的代码往往并不是只有一个 setTimeout,大多数会遇到以下情况。
详细要从浏览器的事件循环讲起,但是讲事件循环的文章太多了,文本就不再累赘地详细展开讲解。
视频
- https://www.youtube.com/watch?v=8aGhZQkoFbQ