使用场景:某个函数需要等另一个或多个函数执行结束后再执行。
举个例子:
async function getSum() {
let one = await this.getOne();
let two = await this.getTwo();
console.log(‘sum=‘,one,two,one+two)
}
function getOne() {
return new Promise((resolve,reject)=>{
setTimeout(function () {
console.log(‘1‘);
resolve(10)
},2000)
})
}
function getTwo() {
return new Promise((resolve, reject) => {
setTimeout(function () {
console.log(‘2‘)
resolve(20)
},1000)
})
}
控制台打印:2秒后打印1,再过1秒后打印2,最后打印sum
await只能放在async异步函数内;await 后面跟的是promise对象;多个await是从上到下依次执行;
如果多个await间无先后依赖关系,可以使用Promise.all(),使用方法:
//getOne(),getTwo()两个方法同上 function getSum() { Promise.all([this.getOne(),this.getTwo()]).then((res)=>{ console.log(‘res---‘,res); let one = res[0]; let two = res[1]; console.log(‘sum=‘,one+two) }) }
控制台:(Promise.all中的两个函数并行,getTwo()先执行完,所以先打印的2,.then(res)的res是Promise.all参数数组返回值,顺序是 一 一 对应的)
原文:https://www.cnblogs.com/duanzhenzhen/p/15252727.html