宏任务
- 浏览器执行的异步代码
- eg:JS执行脚本事件、setTimeout/setInterval,ajax请求完成事件、用户交互事件等
微任务
- Js引擎执行的异步代码
- eg:Promise对象.then()的回调
注意:Promise本身是同步的
JS内代码执行流程
执行script脚本事件宏任务里面的同步代码,遇到宏任务/微任务交给宿主环境,有结果回调函数进入对应队列,当执行栈空闲时候,清空宏任务队列,再执行下一个微任务
console.log(1)
setTimeout(()=>{console.log(2)
}, 0)const p = new Promise((resolve, reject)=>{console.log(3)resolve(4)
})p.then(result => {console.log(result)
})
console.log(5)
输出1 3 5 4 2