Javascript - 是多个setInterval的好方法吗?

时间:2017-12-11 17:37:36

标签: javascript setinterval intervals

我想每20秒做一些东西,另外一个每30秒做一次,另一个每40秒做一次。这就是我为这种情况所做的事情:

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

然而,这对我来说并不是一个好方法。此外,它可能会减慢机器人的速度(无论它是什么样的机器人),但由于它是一个后台机器人,所以有点不重要。

这是最正确的方法吗?

1 个答案:

答案 0 :(得分:2)

拥有三个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个调用