2-11、什么是宏任务什么是微任务?有什么区别

220 阅读1分钟

什么是宏任务?什么是微任务

微任务:Promise、async await

宏任务:setTimeout、setInterval、Ajax、DOM事件

二者的区别

先执行微任务,后执行宏任务

宏任务、微任务、DOM渲染的关系

  1. Call Stack 清空,触发Event Loop
  2. 执行微任务
  3. DOM渲染
  4. 执行宏任务

完整Event Loop过程

image.png

<script>
    // 会把所有的同步代码执行完成之后,才会执行异步代码
    console.log("start");

    setTimeout(() => {
        alert("setTimeout");
    }, 0);

    Promise.resolve().then(() => {
        alert("Promise");
    });
    
    console.log("end");
</script>

第一步会先执行同步代码,等全部同步代码执行完毕之后,再执行异步代码

image.png

image.png

image.png