function d(taskList, maxCount = 2) {
// 当前执行的任务数量
let currentCount = 0
// 执行的索引
let currentIndex = 0
// 已经完成的数量
let resolveCount = 0;
function run() {
const task = taskList[currentIndex]
currentIndex++
task().then(res => {
console.log(res, 'value')
resolveCount++
if (currentIndex < taskList.length) {
run()
}
if (resolveCount === taskList.length) {
console.log('全部执行完成')
}
})
}
for(let i = 0; i < taskList.length && currentCount < maxCount; i++) {
currentCount++
run()
}
}
const task = [
() => new Promise((resolve) => setTimeout(() => resolve(1), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(2), 5000)),
() => new Promise((resolve) => setTimeout(() => resolve(3), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(4), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(5), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(6), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(7), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(8), 1000)),
]
d(task, 4)
console