axios并行请求

axios并行请求

  • axios并行请求

2019/08/14

axios并行请求

有些时候,我们有需求,需要同时请求多个axios请求,这时候可以用到axios.all.
1.先准备若干请求,放入一个数组中
2.把请求数组放入axios.all中调用
3.在回调的参数是一个数组,分别对应各请求的结果
feach.js

//	这是一个实际的接口
export const reviewStatus = params => {
  return axios.patch('/reviewStatus', qs.stringify(params)).then(res => res.data)
}

需要用到的页面

	//使用 axios.all重写 
	        let arr=[];//根据实际情况,arr数组是有值的
	        let paramsArr=[];
	        let axiosList=[];
            arr.map((item,index) => {//对arr数组进行处理,得到paramsArr
                let params = {
                    //这里写传值,对arrs数组进行处理得到
                }
                paramsArr.push(params);//得到paramsArr数组对象
            })
            paramsArr.forEach(item =>{
            	//这里得到axiosList,是若干个请求数组
              axiosList.push(reviewStatus(item));//reviewStatus在feach.js中定义了,这里具体情况写你自己要用的接口
            })
            axios.all(axiosList).then(res=>{//这里的res是数组
            	console.log(res[1]);
              //这里写res处理
            })
            .catch(err=>{
              //这里写err处理
            })

也可以使用spread把请求进行分割,要注意回调里面的参数会有不同,并不是数组了。

	axios.all(axiosList).then(axios.spread(res1,res2,res3)=>{
              console.log(res1);
              console.log(res2);
            })
            .catch(err=>{
              //这里写err处理
            })

也可以使用es6语法,扩展字符串

	axios.all(axiosList).then(axios.spread(res1,res2,...resn)=>{
     
            })
            .catch(err=>{
              //这里写err处理
            })

你可能感兴趣的:(vue,axios,promise,前端,并行)