function doA1(){
new Promise( function (resolve) {
console.log(11);
resolve();
}).then(o=>{
console.log(12);
}).then(o=>{
console.log(13);
}).then(o=>{
console.log(14);
})
}
await doA1();
console.log(2);
//执行结果顺序为 11 12 2 13 14
function doA1(){
return new Promise( function (resolve) {
console.log(11);
resolve();
}).then(o=>{
console.log(12);
}).then(o=>{
console.log(13);
}).then(o=>{
console.log(14);
})
}
await doA1();
console.log(2);
//执行结果顺序为 11 12 13 14 2
请高手解释下为何会如此执行 特别是第一段代码 执行结果为什么不是 11 2 12 13 14
你好,
首先第二段代码相信不用解释了,你返回了 Promise 那么 await 就会等这个 Promise 都 resolve 了才会继续往下执行。
再看回第一段,你的问题应该主要还是在为什么 12 会在 2 之前执行,我们先把代码简化一下
按代码执行顺序,首先初始事件循环
undefined
也进入微事件队列。await 阻塞了,本事件循环准备结束,开始清微事件队列
undefined
,因为没有赋值,被丢弃。