Я пытаюсь обработать очередь параллельно. У меня есть массив объектов, и мне нужно применить функцию func
к каждому элементу параллельно. Я делаю уровень параллелизма цепей, как показано ниже:
async function() {
const pickUpNextTask = () => {
if (this.internalQueue.length) {
return this.func(this.internalQueue.shift())
}
}
const startChain = () => {
return Promise.resolve().then(function next() {
console.log('before then(next)')
return pickUpNextTask().then(next)
})
}
let chains = []
for (let k = 0; k < this.parallelism; k += 1) {
chains.push(startChain())
}
await Promise.all(chains)
this.drain()
}
Это не работает, как я хочу. Функция pickUpNextTask () в конечном итоге возвращает undefined
, когда очередь пуста, поэтому ее нет.
Как с этим справиться?