//请求接口的数据返回
function upSearch(data){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log(data)
resolve(data)
},2000)
})
}
function limitUp(arr, limit){
let init = Math.min(limit, arr.length)
let pool = []
for(let i=0; i<init; i++){
pool.push(run(arr.shift()))
}
function next(){
console.log('当前并发数量', pool.length)
if(arr.length === 0){
console.log('并发请求全部完成')
return Promise.resolve()
}
return run(arr.shift())
}
//请求函数
function run(data){
return upSearch(data).then(next)
}
Promise.all(pool).then(()=>{
console.log('全部完成')
})
}
limitUp([1,2,3,4,5,6,7,8], 3)
08-10
409
10-02
1825