Javascript - исполнитель внутрипроцессных функций с ограничителем скорости? - PullRequest
1 голос
/ 20 января 2020

Представьте, что у меня есть какая-то функция f(), которая должна выполняться постоянно. Но я хочу установить ограничение скорости выполнения, что-то вроде «Выполнить функцию не более 10 раз за 1 минуту». В представлении кода я думаю, что он может иметь следующий интерфейс:

(async () => {
  const f = async () => {};
  const executor = new Executor({ max: 1, duration: 10000 });

  Array(10).fill(null).map(x => executor.addJob(f));

  await executor.execute();
})();

У меня есть несколько идей о том, как реализовать это на чистом JS, но некоторые реализации уже доступны? Кроме того, я знаю, что можно реализовать с помощью некоторого 3-стороннего программного обеспечения, такого как очередь Bull и т. Д., Но мне нужна именно внутренняя реализация.

Заранее спасибо!

1 Ответ

1 голос
/ 20 января 2020

То, что вы ищете, называется throttling . Вы можете найти его реализованным в популярных библиотеках, таких как loda sh 's throttle или вы можете реализовать его в ванили javascript как в this answer

...