今天遇到问代码输出结果的题
console.log(1);
async function asyFunction () {
console.log(2);
await console.log(3);
await console.log(4);
console.log(5);
return 6
}
new Promise((resolve, reject) => {
console.log(10);
resolve();
}).then(res => {
console.log(11);
})
console.log(7);
setTimeout(() => {
console.log(8)
}, 0)
setTimeout(() => {
console.log(9)
}, 1000)
asyFunction().then(res => { console.log(res) });
我知道async是个微任务,但是我刚开始以为async函数里面的同步代码console.log(2)
和console.log(5)
会和promise里的同步代码一样在同步代码执行阶段的时候执行。所以我认为结果应该是1,10,2,5,7,11,3,4,6,8,9。但当我把函数跑起来后,却发现结果并不是我以为得那样
async
可以看到,在promise里得同步代码
console.log(10)
是在同步队列里执行的,但async函数里面的“同步代码”却是在微任务队列里执行的。