微任务执行问题
代码1
js
async function asy1() {
console.log(1)
await asy2()
console.log(2)
}
async function asy2() {
await 1
console.log(3)
}
async function asy3() {
Promise.resolve().then(() => {
console.log(4)
})
}
asy1()
asy3()输出:
1
3
4
2代码2
js
async function asy1() {
console.log(1)
await asy2()
console.log(2)
}
async function asy2() {
await Promise.resolve().then(() => {
console.log(3)
})
}
async function asy3() {
Promise.resolve().then(() => {
console.log(4)
})
}
asy1()
asy3()输出:
1
3
4
2代码3
js
async function asy1() {
console.log(1)
await asy2()
console.log(2)
}
async function asy2() {
console.log(3)
}
async function asy3() {
Promise.resolve().then(() => {
console.log(4)
})
}
asy1()
asy3()输出:
1
3
2
4结论:
通过已上代码可以看出,asy2 内若有异步(await 或 Promise.then),则 console.log(2) 会晚于 console.log(4) 输出(结果:1 3 4 2);若无异步,console.log(2) 会先于 console.log(4) 输出(结果:1 3 2 4)。
