浏览器Js运行机制

资料:

从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理

JavaScript 运行机制详解:再谈Event Loop

 

从中可以知道所有的线程都在配合主线程,所以无论事件环,定时器等执行的js代码都会等都会先在队列里排队,然后等js主线程空闲下来再执行。

所以使用定时器时有时候不精准,是因为主线程一直繁忙中,无法去执行时间已到后推入队列的回调代码,还有就是浏览器窗口缩小后主线程会停止

执行,而定时器线程还是会执行,那么队列里的代码就会一直积累,所以有时候定时器编写动画效果会看到动画的加速不协调执行。

ISO或Safi浏览器等都有滚动时停止执行js效果,ISO8以下才会。

原文地址:https://www.cnblogs.com/zhangzhicheng/p/8626839.html