美文网首页
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