Promise并发量控制

let self = this;
new Promise(resolve => {
let index = 0
let timer = null;
let stepCount = 2 // 并行n个
let result = [] // 数据存放
let count = promises.length
if (promises.length === 0) {
resolve(result)
} else {
function runPromise() {
let promise = []
if (index === promises.length) {
resolve(result);
} else {
stepCount = Math.min(count, stepCount)
for (let i = 0; i < stepCount; i++) {
promise.push(promises[index])
--count;
index++
}
let _count = 0;
function loop(){
Promise.all(promise.map(n=>{
return axios(n)
})).then(res=>{
_count = 0
timer = null
let data = []
for (let i = 0; i < res.length; i++) {
data.push(res[i].data)
}
result = [...result,...data]
runPromise()
}).catch((err)=>{
console.log(err)
_count+=1
if(_count > 4){
self.$message.warning('重试次数达到4次')
console.log(err)
return false
}
self.$message.warning('正常重试,次数'+_count)
timer = setTimeout(()=>{
loop()
},1000)
})
}
loop()
}
}
runPromise()
}
})
posted @ 2022-09-17 15:51  疾风_剑豪  阅读(102)  评论(0)    收藏  举报