0%

多个异步调用按顺序进行调用

最近做项目遇到了异步调用上千个,但是,最后的结果要进行加和处理。

但是,如果直接移步加和的话会出现各种问题。


参考资料



代码


因为感觉还是原来的例子给的简便,所以,直接贴一下。

第一步:首先先对请求的方法进行封装 Promise

1
2
3
4
5
6
7
8
9
10
11
12
13
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 => {
})
});
},

第二步:使用 asyncawait 再对Promise进行封装 并返回Promise的值

1
2
3
4
async test(formData,config,index){
let n = await this.fn(formData,config,index)
return n
},

第三步:再循环里执行async的函数

1
2
3
4
var arr = []
for (var i=0;i<5;i++){
arr.push(this.test(formData,config,i))
}

第四步:再用 Promise.all 的方法进行解析

1
2
3
4
5
Promise.all(arr).then(res => {
console.log(res);
}).catch(err => {
console.log('error', err)
})

Promise.all 方法中的 res 就是for循环中按顺序请求返回的结果

请我喝杯咖啡吧~