资料:
JavaScript 运行机制详解:再谈Event Loop
从中可以知道所有的线程都在配合主线程,所以无论事件环,定时器等执行的js代码都会等都会先在队列里排队,然后等js主线程空闲下来再执行。
所以使用定时器时有时候不精准,是因为主线程一直繁忙中,无法去执行时间已到后推入队列的回调代码,还有就是浏览器窗口缩小后主线程会停止
执行,而定时器线程还是会执行,那么队列里的代码就会一直积累,所以有时候定时器编写动画效果会看到动画的加速不协调执行。
ISO或Safi浏览器等都有滚动时停止执行js效果,ISO8以下才会。