function promise1() {
return new Promise((resolve) => {
console.log('promise1 start');
resolve();
})
}
function promise2() {
return new Promise((resolve) => {
console.log('promise2 start');
resolve();
})
}
function promise3() {
return new Promise((resolve) => {
console.log('promise3 start');
resolve();
})
}
function promise4() {
return new Promise((resolve) => {
console.log('promise4 start');
resolve();
}).then(() => {
//微任务
console.log('promise4 end');
})
}
async function asyncFun() {
console.log('async1 start');
await promise2();
//后面所有的代码进入微任务
console.log('async1 inner');
await promise3();
//又进入微任务
console.log('async1 end');
}
//进入宏任务
setTimeout(() => {
console.log('setTimeout start');
promise1();
console.log('setTimeout end');
}, 0);
asyncFun();
promise4();
console.log('script end');
答案:
这道题的关键是await对执行顺序的影响。
再者settimeout是宏任务,promise.then是微任务。微任务优先于宏任务就OK了。