异步试题1
js
async function async1 () {
console.log(1);
await async2(); // 等待执行async2的执行,并堵塞下面的代码运行,可以理解为注册一个微任务
console.log(2);
}
async function async2 () {
// await console.log(3); // 等待console.log(3)的执行,并注册一个新的嵌套微任务
console.log(3); // 同步执行,不产生微任务
}
console.log(4);
setTimeout(function() {
console.log(5);
}, 0) // 宏任务1
async1();
new Promise (function(resolve) {
console.log(6);
resolve();
}).then(function () {
console.log(7); // 微任务
});
console.log(8);
// 在chrome与firefox中运行的结论:
// async2中有await时: 4 1 3 6 8 7 2 5
// async2中没有await时: 4 1 3 6 8 2 7 5