// 主线程从上到下按顺序执行
// 遇到宏任务会将宏任务放入宏队列中,遇到微任务会将其放入微队列中。
// 主线程运行完毕,然后清空微队列,之后会从宏队列取出一个宏任务作为主线程运行新的一轮循环
// 宏任务 setTimeout, setImmediate, requestAnimationFrame
// 微任务 Promise, Process.nextTick
console.log(1)
setTimeout(() => {
console.log(4)
Promise.resolve().then(() => console.log(5))
}, 0)
Promise.resolve().then(() => {
console.log(3)
setTimeout(() => console.log(6), 0)
})
console.log(2)