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 方法执行,那么其回调函数就应该先被放入微任务队列,也就应该先被执行,但实际情况不是这样。
另外,如果我把 async1
和 async2
的 async
关键字去掉,那么输出就变为
async1 end
promise2
求大佬解答
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.