const arr = []
for (let i = 0; i < 200; i++) {
const taskObj = {
task: () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve('请求成功' + i)
}, 2000)
})
},
callback: res => {
console.log(res);
}
}
arr.push(taskObj)
}
function tasksControler(tasksArr, max) {
const copyTasks = tasksArr.slice(0)
const startSingleTask = () => {
if (copyTasks.length === 0) return
const { task, callback } = copyTasks.shift()
task().then(res => {
callback(res)
startSingleTask()
})
}
for (let i = 0; i < max; i++) {
startSingleTask()
}
}
tasksControler(arr, 2)