是一个关于执行循序的问题
async function async1() {
console.log('async1 start')
await async2()
console.log('async1 end')
}
async function async2() {
new Promise(function (resolve) {
console.log("promise 1")
resolve()
}).then(function () {
console.log('promise 2')
})
}
console.log('script start')
setTimeout(() => {
console.log('setTimeout')
}, 0)
async1()
new Promise(function (resolve) {
console.log("promise 3")
resolve()
}).then(function () {
console.log('promise 4')
})
console.log('script end')
运行之后 打印出来的
script start
async1 start
promise 1
promise 3
script end
promise 2
async1 end
promise 4
setTimeout
我不明白的的点就是在于 打印了promise1之后 除了.then 加入了微任务
然后执行的为什么不是async1() 函数里的 async1 end
而是打印了下一个Promise的立即执行里面promise 3等等其他的任务
await 是等待这个async2函数彻彻底底的运行完毕(宏任务和微任务全部执行)才会执行后面的嘛?
还请大佬指点迷津