关于async/await输出顺序的题
async function async1() {
console.log('async1 start');
await async2();
console.log('async1 end');
}
async function async2() {
console.log('async2 start');
return new Promise((resolve, reject) => {
resolve();
console.log('async2 promise');
})
}
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
}, 0);
async1();
new Promise(function(resolve) {
console.log('promise1');
resolve();
}).then(function() {
console.log('promise2');
}).then(function() {
console.log('promise3');
});
console.log('script end');
为什么打印顺序是promise2-promise3-async1 end,而不是promise2- async1 end - promise3呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你的题目等价于
最终问题转变为
new Promise
的resolve
如果传入的是一个 Promise 将要怎么处理,这个问题可以参考如何理解 resolve(Promise.resolve())内部执行了什么?
具体 C++ 内部如何实现的,我也不甚了解
尝试下把async 改成promise
这段代码中then的回调返回的不是Promise,相当于下面代码
改写成下面这样可以达到你想要的的效果