最近接到一个新的需求,需要批量处理上传的文件,但是后端的接口一次只能接收一个文件,本来一开始是直接在循环体里面请求接口,发现根本行不通,总是先把循环体执行完了再执行then后面的语句,后来查了发现可以用axios.all+axios.spread实行请求的并发处理
首先在循环体里新建并存储formdata变量
for(let i=0;i<this.fileList.length;i++){
let formData=new FormData();
formData.append('id',this.gettime+i)
formData.append('file',this.fileList[i].raw)
然后把每一次请求存储到一个数组里面,另外存储一个res变量用于最后输出结果数组
const oneApi = api.pdftodocx(formData)
this.DataArr.push(oneApi)
resArr.push("res"+i)
使用 axios.all 来处理接口数组,然后用 axios.spread 来输出结果数组
var that=this
this.$axios.all(this.DataArr)
.then(that.$axios.spread(function(...resArr){
console.log("success",resArr)
that.result=resArr
console.log(that.result)
that.loading = false;
that.showresult=true
}))
呜呜卡了我两天的问题,目前这样是解决好了,浅浅存个档,如果有说错的地方欢迎大佬们指正批评!!