关于async函数中await的执行分析
async函数中await命令后面是一个 Promise 对象。如果不是,会被转成一个立即resolve的 Promise 对象。那么await是否等待这个Promise置为resolve状态才能进行下一步运行呢?我们通过下面代码分析下
async function test(){
await new Promise(function(resolve,reject){
setTimeout(x=>resolve('11111'),2000);
}).then(x=>console.log(x));
await new Promise(function(resolve,reject){
setTimeout(x=>resolve('22222'),2000);
}).then(x=>console.log(x));
}
test()
//11111 2秒后打印
//22222 4秒后打印
分析得出await是在Promise的resolve状态下才进行下一步。
如果没有处理resolve状态呢?
async function test(){
await new Promise(function(resolve,reject){
//setTimeout(x=>resolve('11111'),2000);
});
await new Promise(function(resolve,reject){
setTimeout(x=>resolve('22222'),2000);