Javascript - 多个setInterval的好方法吗?

Javascript - Are multiple setInterval's good way?

我想每 20 秒做一些事情,每 30 秒做一件事情,每 40 秒做一件事情。这就是我会为这种情况做的事情:

const seconds = 1000;
setInterval(doStuff1, 20 * seconds);
setInterval(doStuff2, 30 * seconds);
setInterval(doStuff3, 40 * seconds);

但是,这对我来说似乎不是一个好方法。此外,它可能会减慢机器人(不管它是什么机器人)一点点,但一点点并不重要,因为它是后台机器人。

这是最正确的方法吗?

拥有三个 setIntervals 应该没什么大不了的,但是如果您对需要通过单击按钮来控制停止特定间隔没有任何限制,那么你可以考虑这样的事情。

const seconds = 1000;
const time = 0;

const interval = setInterval(() => {
  time += 10

  (time % 20 === 0) && doStuff1();

  (time % 30 === 0) && doStuff2();

  (time % 40 === 0) && doStuff3();

}, 10 * seconds);

这并没有带来很好的优化,但这只是一种记住您启动的间隔的简单方法,它只是一个,而不是有多个间隔,而忘记 clearInterval时间.

也没有开销。您的 20、30 和 40 的 3 个间隔将在 100 秒的跨度内触发 10 次,这与一个 10 间隔相同。

100 秒

3 次间隔 - 10 次调用

1 个间隔 - 10 次调用

200秒

3 个间隔 - 21 次调用

1 次间隔 - 20 次调用

300秒

3 个间隔 - 32 次调用

1 个间隔 - 30 次调用