js事件轮询机制

console.log(1)
setTimeout(function(){
    console.log(2)
},0);
console.log(3)

毫无疑问:运行结果是1 3 2

也就是说:setTimeout里的函数并没有立即执行,而是延迟了一段时间,满足一定条件后才去执行的,我们叫做异步代码。

所以这里我们首先知道了js里的一种分类方式,就是将任务分为:同步任务和异步任务。

按照这种分类方式:js的执行机制是

  • 首先判断js是同步的还是一步的,同步的就进入主进程,异步的就进入event table(事件表)
  • 异步任务在Event table中注册函数,当满足触发条件后,被推入event queue(事件队列)
  • 同步任务进入主线程后一直执行,直到主线程空闲时,才会去event queue中查看是否有可执行的异步任务,如果有就推入主进程中
原文地址:https://www.cnblogs.com/mttcug/p/8600227.html