美文网首页
事件执行的机制(Event Loop)

事件执行的机制(Event Loop)

作者: my木子 | 来源:发表于2021-04-03 21:29 被阅读0次

执行顺序

  1. 一开始整段脚本作为第一个宏任务执行
  2. 执行过程中同步代码直接执行,宏任务进入宏任务队列,微任务进入微任务队列
  3. 当前宏任务执行完出队,检查微任务队列,如果有则依次执行,直到微任务队列为空
  4. 执行浏览器 UI 线程的渲染工作
  5. 检查是否有Web worker任务,有则执行
  6. 执行队首新的宏任务,回到2,依此循环,直到宏任务和微任务队列都为空

宏任务与微任务

  • 宏任务(MacroTask)setTimeout、setInterval, requestAnimationFrame, I/O
  • 微任务(MicroTask) Promise.then, 事件绑定,process.nextTick, Object.observe(已废弃;Proxy 对象替代), MutationObserver
     console.log('1')
      // 宏任务
      setTimeout(function() {
        console.log('2')
        new Promise(function(resolve) {
          console.log('3')
          resolve()
        }).then(function() {
          console.log('4')
        })
      }, 0)

      // 微任务
      new Promise(function(resolve) {
        console.log('5')
        resolve()
      }).then(function() {
        console.log('6')
      })

      // 宏任务
      setTimeout(function() {
        console.log('7')
        new Promise(function(resolve) {
          console.log('8')
          resolve()
        }).then(function() {
          console.log('9')
        })
        console.log('10')
      }, 0)

      // 微任务
      new Promise(function(resolve) {
        console.log('11')
        resolve()
      }).then(function() {
        console.log('12')
      })
      console.log('13')

      // 1 5 11 13 6 12 2 3 4 7 8 10 9
      // 1. setTimeout Promise 都是异步执行
      // 2. Promise 中的 then 异步执行
      // 3. 微任务优先级大于宏任务
      // 4. 执行完一个宏任务中的所有代码才会执行下一个宏任务

相关文章

  • js引擎的执行机制

    js引擎的执行机制 JS的Event Loop是JS的执行机制,理解JS的执行,必须理解Event Loop JS...

  • iOS RunLoop由浅入深

    Event Loop Event Loop事件循环机制,如javascript的事件循环,以及依赖其的nodejs...

  • 1分钟了解 JavaScript EventLoop

    Event Loop Event Loop 是一个程序结构,用于等待和发送消息和事件。 Event Loop 执行...

  • 事件执行的机制(Event Loop)

    执行顺序 一开始整段脚本作为第一个宏任务执行 执行过程中同步代码直接执行,宏任务进入宏任务队列,微任务进入微任务队...

  • 成长(10/2000)——面试题合集7

    事件循环机制event-loop 事件循环机制由三部分组成:调用栈、消息队列和微任务队列。 event-loop开...

  • JavaScript之Event Loop

    细谈Event Loop 前段时间对JavaScript的 Event Loop (事件循环机制)有些感兴趣,就去...

  • Nodejs 解读event loop的事件处理机制

    摘要:1. nodejs 为什么要存在一个event loop的事件处理机制?2. event loop的事件处理...

  • 异步

    一、循环 Event Loop 机制 1、事件循环的流程 在main中直接执行,优先于Microtask和Even...

  • JavaScript eventLoop tasks & mi

    首先,JavaScript是单线程的,用事件循环的机制来保证系统的正常运行。 JS 的 event loop 执行...

  • js 在浏览器的事件机制

    事件循环Event Loop:浏览器为了协调事件处理、脚本执行、网络请求和渲染等任务而制定的工作机制。 宏任务Ta...

网友评论

      本文标题:事件执行的机制(Event Loop)

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