循环使用Promise,在所有Promise执行完毕后再执行其他操作

在实际项目中,经常会遇到循环列表,根据id去掉接口获取数据,当列表中的每一项都获取完数据的时候再去执行其他操作,此时需要用到Promise.all来用于等待多个异步计算

let arr = [
	{id:1,name:'111'},
	{id:2,name:'222'},
	{id:3,name:'333'},
]
a(){
   return new Promise((resolve,reject)=>{
     let arr2=[]
     arr.forEach(v=>{
       const p = new Promise((res,rej)=>{
         api.get(v.id).then(api_res=>{  //调用接口
           console.log("接口获取数据成功",api_res)
           res()  //单个接口执行完毕
         })
       })
       arr2.push(p)
     })
     Promise.all(arr2).then((result) => {
       console.log(result)
       resolve()  //所有接口都执行完毕
     })
   })
 },
 b(){
   a().then(res=>{
     console.log("所有接口都请求完了")
     //在此处执行其他操作
   })
 }
原文地址:https://www.cnblogs.com/dubayaoyao/p/14578492.html