console.log('start');
setTimeout(function() {
console.log('timeout');
}, 0);
Promise.resolve().then(function() {
console.log('promisel');
}).then(function() {
console.log('promise2');
}).then(() => console.log(`promise3`))
async function asyncFunc() {
await asyncSubFunc();
Promise.resolve().then(x => {
console.log('async end');
})
}
async function asyncSubFunc() {
console.log('async sub');
return Promise.resolve().then(() => {
console.log('async sub promise');
});
}
asyncFunc();
console.log('end');
理想的预期输出:
start
async sub
end
promisel
async sub promise
async end
promise2
promise3
timeout
实际浏览器控制台输出为:
start
async sub
end
promisel
async sub promise
promise2
promise3
async end
timeout
问题1:await后的代码被执行完成后,为什么没有继续往下,而是继续执行微任务队列中的微任务?
问题2:await后(下一行)的代码会被放在微任务队列中执行,具体的执行时机是?
你这不存在固定顺序,你多执行几遍,应该会输出结果都不一样。
你这段代码,相当于有3个异步,相当于3个各自执行,谁先谁后不固定。