时间轮询
栈:
队列:微任务队列、宏任务队列
- 先执行调用栈中的代码
- 执行微任务队列中的代码 .then() 、.catch() 、 .finally() 、queueMicrotask()
- 执行宏任务队列中的代码 setTimeout
Promise.resolve().then(()=>{
Promise.resolve().then(()=>{
console.log(1)
})
})
queueMicrotask(()=>{
console.log(2)
})
1.把第一个Promise.resolve().then()放入微任务队列中
2.把queueMicrotask()放入队列
3. 第一个Promise.resolve().then()执行完,把第二个Promise.resolve().then()放入微队列
console.log(1);
setTimeout(() => console.log(2));
Promise.resolve().then(() => console.log(3));
Promise.resolve().then(() => setTimeout(() => console.log(4)));
Promise.resolve().then(() => console.log(5));
setTimeout(() => console.log(6));
console.log(7);