const parallelWorkers = [....] const jobs = [....] const queueGenerator = (function* () { for (const job of jobs) yield job })() parallelWorkers.forEach(worker => { for (const nextUnpickedJob of queueGenerator) { await assignTask(worker, nextUnpickedJob) } })