async function async1() {
console.log('async1 start','2') //第二同步输出
await async2()
console.log('async1 end','6') // 此部分为await异步微任务结束后,而同步打印输出
}
async function async2() {
console.log('async2','3') // 此部分(第三)同步输出
setTimeout(() => {
console.log('setTimeout1','倒数第二') // 先进先出原则
}, 0);
}
console.log('script start','1') // 第一同步输出
setTimeout(function () {
console.log('setTimeout2','倒数第一') // 最后的宏任务执行打印输出(先进先出)
}, 500)
async1(); //
new Promise(function (resolve) {
console.log('promise1','4') // 第四同步输出
resolve();
}).then(function () {
console.log('promise2','7') // 第二微任务结束后,此行打印输出
})
console.log('script end','5') // 第五同步输出