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