const handQueue = (
reqs // 请求总数
) => {
reqs = reqs || []
const requestQueue = (concurrency) => {
concurrency = concurrency || 6
const queue = []
let current = 0
const dequeue = () => {
while (current < concurrency && queue.length) {
current++;
console.log(current)
const requestPromiseFactory = queue.shift()
requestPromiseFactory()
.then(() => {
})
.catch(error => {
console.log(error)
})
.finally(() => {
current--
dequeue()
});
}
}
return (requestPromiseFactory) => {
queue.push(requestPromiseFactory)
dequeue()
}
}
const enqueue = requestQueue(6)
for (let i = 0; i < reqs.length; i++) {
enqueue(() => axios.get('/api/test' + i))
}
}
handQueue([1,2,3,4,5,6,7,8,9,10,11,12])
console