Очередь задач с лимитом

Hard
PromiseAsyncQueueAvito

Реализуйте функцию limitConcurrency(tasks, limit), которая:

  • Принимает массив функций, каждая из которых возвращает промис
  • Выполняет не более limit задач одновременно
  • Возвращает промис с массивом результатов в порядке входного массива
const tasks = [
  () => fetch('/api/1'),
  () => fetch('/api/2'),
  () => fetch('/api/3'),
  () => fetch('/api/4'),
];
const results = await limitConcurrency(tasks, 2);
// максимум 2 запроса одновременно

Примеры

Пример 1
Вход:
limitConcurrency(tasks, 2)
Выход:
Результаты в порядке задач
Ваш код - JavaScript
Результаты
Нажмите «Запуск» для выполнения кода