await 后面的代码被放到微任务队列,
await async 是个语法糖,在执行到await时,会将await后面的代码放到微任务队列,
promise,微任务,宏任务
入口文件是一个宏任务,在执行过程中可能会产生微任务或宏任务,当入口文件执行完后,会去执行它产生的微任务,然后再去执行它产生的宏任务。 也就是说在执行代码时,一个任务P在执行时产生了微任务A,那么当任务P执行完之后,就会去执行任务P它产生的微任务A(如果在执行微任务A时又产生了微任务B,那么会在执行完微任务A之后,再去执行微任务B).然后再去执行任务P它产生的宏任务
练习题
console.log('script start')
async function async1() { await async2() console.log('async1 end') } async function async2() { console.log('async2 end') } async1()
setTimeout(function() { console.log('setTimeout') }, 0)
new Promise(resolve => { console.log('Promise') resolve() }) .then(function() { console.log('promise1') }) .then(function() { console.log('promise2') })
console.log('script end')