vue for循环中按顺序axios请求
2020-05-27 本文已影响0人
张xiao蛋
- 第一步:首先先对请求的方法进行封装Promise
fn(formData,config,index){
return new Promise((resolve, reject) => {
upload(formData,config).then(res => {
if (res.code === 200) {
resolve(res);
} else {
this.$message.error(res.msg);
document.querySelector('#file').value = '';
}
}).catch(err => {
})
});
},
2.第二步:使用async和await再对Promise进行封装 并返回Promise的值
async test(formData,config,index){
let n = await this.fn(formData,config,index)
return n
},
3.第三步:再循环里执行async的函数
var arr = []
for (var i=0;i<5;i++){
arr.push(this.test(formData,config,i))
}
4.第四步:再用Promise.all的方法进行解析
Promise.all(arr).then(res => {
console.log(res);
}).catch(err => {
console.log('error', err)
})
Promise.all方法中的res就是for循环中按顺序请求返回的结果