执行顺序
- 首先执行 script 宏任务
- 执行同步任务,遇见宏任务放入宏任务队列,微任务放入微任务队列
- 当前宏任务执行完毕出队列,执行微任务,直至微任务执行完毕
- 执行浏览器 UI 线程渲染
- 执行 web worker
- 执行下一个宏任务,回到第二步,依次循环,直至宏任务和微任务队列清空
宏任务:script、setTimeout、setInterval、UI rendering、new Promise
微任务:promise.then、promise.catch
例 1
const promise = new Promise((resolve)=>{
console.log(1);
resolve();
});
setTimeout(()=>{
console.log(2);
});
promise.then(()=>{
console.log(3);