Как стать автором
Обновить

Комментарии 3

const promisePool = async (functions, n) => {
  const worker = async () => {
    const fn = functions.shift();

    if (fn) {
      await fn();
      await worker();
    }
  };

  await Promise.all(Array.from(Array(n)).map(worker));
};

Может упасть на большом количестве functions.length/n, тогда можно по старинке рекурсию заменить на цикл.

Почему может упасть? Рекурсивный вызов тут асинхронный, переполнения стека не должно быть.

Очень интересно. Я тоже так думаю. Метод у Promise в then будет выполняться только когда Call Stack пуст, а это значит что переполнения стека быть не должно.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории