编辑代码

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)
})