【无标题】

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')
  })

console.log('script end')

输出结果是什么:

await 之后的代码被放入微任务队列的原因是因为 await 本身会暂停 async 函数的执行,直到等待的 Promise 被解决。为了确保 await 之后的代码在正确的时机执行,JavaScript 引擎将其包装成一个微任务,并放入微任务队列中,等待当前宏任务执行完毕后再执行。

这种机制确保了异步代码的执行顺序,使得 await 之后的代码能够在异步操作完成后正确地执行,同时不会阻塞主线程。

你可能感兴趣的:(前端,javascript,vue.js)