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呢?
你的题目等价于
最终问题转变为
new Promise
的resolve
如果传入的是一个 Promise 将要怎么处理,这个问题可以参考如何理解 resolve(Promise.resolve())内部执行了什么?
具体 C++ 内部如何实现的,我也不甚了解