一个 Promise/async/await 的执行顺序问题求助🙏

1次阅读

共计 443 个字符,预计需要花费 2 分钟才能阅读完成。

async function async1() {async2().then(() => {console.log('async1 end');
  });
}
async function async2() {return new Promise((resolve, reject) => {resolve();
  })
}

async1();
new Promise(function(resolve) {resolve();
}).then(function() {console.log('promise2');
})

输出结果为

promise2
async1 end

(面试时候遇到的,去掉了无关的 log)

想知道为什么 promise2 早于 async1 end?

我的想法是 async2() 的 then 方法早于 new Promise 的 then 方法执行,那么其回调函数就应该先被放入微任务队列,也就应该先被执行,但实际情况不是这样。

另外,如果我把 async1async2async 关键字去掉,那么输出就变为

async1 end
promise2

求大佬解答

正文完
 0