zoukankan      html  css  js  c++  java
  • 宏任务和微任务

    javasript宿主环境有事件循环,异步任务会被加入到任务队列,任务队列分为两种,宏任务(macroTask)和微任务(microTask)。

    宏任务队列会有多个,微任务队列只有一个。

    每次事件循环,先执行微任务队列,执行完后,会选择一个宏任务队列的一个任务执行,然后再次执行微任务队列,完成后再挑一个宏任务队列一个任务执行..

    总之,就是 microTask queue -> macroTask queue[0] -> microTask queue -> macroTask queue[0] ....

    结果是,微任务会先于宏任务执行。

    Microtasks:
    
    process.nextTick
    promise
    Object.observe
    MutationObserver
    
    Macrotasks:
    
    setTimeout
    setInterval
    setImmediate
    script(全局任务)
    I/O(例如ajax)
    UI渲染

    优先级:process.nextTick > promise ,  setImmediate > setTimeout

    速记:微任务,所有p开头的和观察的;宏任务,所有set开头的,以及大块操作,例如script标签,IO,UI渲染

  • 相关阅读:
    第六周作业
    第六周上机练习
    第十二周作业
    第十二周上机练习
    第十一周作业
    第十一周上机练习
    第十周上机练习
    第九周上机练习
    第八周作业
    第八周上机练习
  • 原文地址:https://www.cnblogs.com/mengff/p/11739189.html
Copyright © 2011-2022 走看看