console.log(1);
setTimeout( ()=>{
console.log(3);
},0)
setTimeout( ()=>{
console.log(2);
},0)
new Promise((resolve,reject)=>{
resolve()
}).then(()=>{
console.log(5);
})
console.log(4);
log(1)是主线程任务 > log(4)是主线程任务 > log(5) Promise是微任务 > log(3) setTimeout是宏任务 > log(2) setTimeout是宏任务
输出顺序是 1 4 5 3 2