美文网首页
JS事件循环的理解

JS事件循环的理解

作者: 焦糖大瓜子 | 来源:发表于2019-07-05 09:45 被阅读0次
  1. js引擎运行的环境就是宿主环境,通常就是Web浏览器、node
  2. js引擎提供一种机制来处理分块执行的代码,这种机制就是事件循环:

事件循环伪代码:

var eventLoop = []; // eventLoop 作为队列的数据,存储待执行的事件
var event; // 当前要处理的事件
while(true){
  // 一次tick
if(eventLoop.length > 0){
    event = eventLoop.shift()
    try{
        // 执行当前事件
        event()
    } catch (err){
        // 错误上报
        reportError(err)
    }
  }
}

  1. setTimeout()为什么不精准?
    因为setTimeout并没有把你的回调函数挂在事件循环中。作为一个定时器,当设定时间到达后,环境才把你的回调函数放入事件循环中。这时候你的事件队列可能很长了,所以这个回调执行的时间完全依赖事件队列的状态决定。

相关文章

网友评论

      本文标题:JS事件循环的理解

      本文链接:https://www.haomeiwen.com/subject/jfzjhctx.html