Skip to content

异步试题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