const deplay = (interval) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(interval)
}, interval)
})
}
let tasks = [
deplay(1001),
deplay(1002),
deplay(1003),
deplay(1004),
deplay(1005),
deplay(1006)
]
const creatRequest = (tasks, limit = 5) => {
const result = []
let index = 0
let limitArr = new Array(limit).fill(null)
limitArr = limitArr.map((item, i) => {
return new Promise((resolve, reject) => {
const run = () => {
if(index >= tasks.length) {
resolve()
return
}
const old_index = index
const task = tasks[index++]
console.log(index)
task.then(res => {
result[old_index] = res
console.log(old_index, res)
run()
}).catch(err => {
reject(err)
})
}
run()
})
})
return Promise.all(limitArr).then(() => result)
}
creatRequest(tasks, 5).then(res => {
console.log(res)
})