axios 同时多个请求_axios多并发请求

本文介绍了在JavaScript中使用axios库实现多个并发请求的方法,特别是在点击导出Excel时处理姓名列表前五个用户的文章数据请求。通过对比localStorage中的数据,找出未请求的数据,使用axios的all方法或Promise.all进行并发请求。同时,文中分享了处理并发请求时的常见问题及解决方案,如使用axios.spread展开返回数据等。
摘要由CSDN通过智能技术生成

场景:

点击导出Excel按钮实现,姓名列表中前五个的所有的文章数据发送给后端,姓名列表中点击过的数据会被存放到localStorage中;

思路:

点击导出按钮,把前五个数据逐个和localStorage中的数据对比,找到前五个中没有发送请求的数据,放到数组中,然后对这些没有请求的数据进行一次多并发请求,把多并发请求到的数据存储到浏览器中,再统一按照前五名的姓名顺序到localStorage中拉取数据,提交后台;

问题:

如何一次发送多个请求?

解决办法:

方法一:

getNameData(name,affiliation){return this.$axios.get("/api/academic/paper_search", {

params: {

name: name,

affiliation: affiliation

}

})

},

sendAllAxios(){

let arr=[]this.getFiveNameData.forEach(item =>{if(!JSON.parse(localStorage.getItem("baseInfo"))[item.name]){

arr.push(this.getNameData(item.name,item.affiliation))

}

});return new Promise((resolve,reject)=>{if(arr.length){this.$axios.all(arr).then((res)=>{

res.forEach(item=>{if(item.status == 200){this.baseInfo[item.config.params.name] =item.data

}

})

localStorage.setItem("baseInfo",JSON.stringify(this.baseInfo))

resolve()

}).catch(e=>{console.log(e)})

}else{

let sendData={}this.getFiveNameData.forEach(item =>{

sendData[item.name]= JSON.parse(localStorage.getItem("baseInfo"))[item.name]

})

resolve(sendData)

}

})

},

方法二:

Promise.all(arr).then(res=>{ })

踩坑:

this.$axios.all(arr).then((res)=>{})中then的第一个参数是一个数组,表示所有请求的信息;

this.$axios.all(arr).then(this.$axios.spread(function (acct, perms){ }) 这种方式是请求返回的数据形式的数据逐个展开,acct表示请求返回后数组中的第一条数据,perms表示第二条数据,

注意:

spread是在确定几个请求一起发的情况下用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值