使用场景:某个函数需要等另一个或多个函数执行结束后再执行。
举个例子:
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参数数组返回值,顺序是 一 一 对应的)