Параллельное выполнение с лимитом
СложнаяРеализуйте parallelLimit(tasks, limit) - выполнение задач с контролем параллелизма используя Worker Pool паттерн.
Чем отличается от promise-limit?
Эта задача использует более продвинутый подход - Worker Pool. Создаются N "воркеров" (workers), каждый из которых берёт следующую задачу из очереди после завершения текущей.
Требования:
- Создать limit воркеров (async функций)
- Каждый воркер берёт задачу из очереди, выполняет, берёт следующую
- Использовать общий индекс для всех воркеров
- Возвращать результаты в исходном порядке
Пример:
// 5 задач, но только 2 выполняются одновременно
const results = await parallelLimit([
async () => { await sleep(100); return 1; },
async () => { await sleep(100); return 2; },
async () => { await sleep(100); return 3; },
async () => { await sleep(100); return 4; },
async () => { await sleep(100); return 5; }
], 2);
// Время выполнения: ~300ms (не 500ms)JavaScript•UTF-8
Run your code to see results.
Click the Run button above
Mobile view - please use desktop for better experience