先来一张图
![](https://img.haomeiwen.com/i10804919/6c210d1b285e84e8.png)
下面上写的代码,在看浏览器的主线程的执行情况
![](https://img.haomeiwen.com/i10804919/aa1f9573e66c4189.png)
再来上主线程页面初始化加载时的情况
![](https://img.haomeiwen.com/i10804919/e16c0cd5bff038ef.png)
setInterval在html解析的时候已经到了线程池了。下面的timer就是在自动循环,执行第一张图的事件循环
在来张点击事件和setInterval在一起的线程图
![](https://img.haomeiwen.com/i10804919/b23fb53b63dc5178.png)
上面的截图都是浏览器主线程的情况,setInterval和点击事件回调,都是先到线程池,等待主线程的调用,根据先进先出的原则在主线程中执行。
根据主线程的情况来看,点击事件(我说的点击事件是不算回调函数的)是同步执行的,回调函数是异步。如果页面内有js不断循环执行,并且不让页面崩溃,完全可以阻塞整个页面的所有交互.
网友评论