执行顺序
// 同步主线程 => 异步线程 => 微任务 => 宏任务 => 宏任务里再循环 => 微任务 => 宏任务
//核心理解
//promise 是同步的,只有relove出去的才是异步
//promise 是微任务
//setTimeout ajax异步回调是宏任务
setTimeout(() => {
console.log('1') // 宏任务
}, 0);
Promise.relove()
.then(()=> {
console.log('2') // 微任务
})
.then(()=>{
console.log('3') // 微任务
})
console.log('4') // 同步
执行顺序:4, 2, 3, 1
// 再来一个
setTimeout(() => {
console.log('2') // 宏任务
Promise.relove().then(()=>{
console.log('3') // 宏任务中的微任务
})
}, 0);
new Promise((relove, reject)=>{
console.log('4') // 同步
relove('5') // 微任务
}).then((data)=>{
consloe.log(data) // 微任务
})
setTimeout(() => {
console.log('6') // 宏任务
}, 0);
console.log('7') // 同步
执行顺序 4, 7, 5, undefined, 2, 3, 6