Javascript - 多个 setInterval 的好方法吗?

标签 javascript setinterval intervals

<分区>

我想每 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 次调用

关于Javascript - 多个 setInterval 的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47758343/

相关文章:

javascript - jQuery UI 对话框中的 HTML 显示为文字文本

JavaScript 多维数组

Oracle dbms_job : job have to run only weekday 6am-8pm

algorithm - 如何将非线性范围指向线性范围并返回?

javascript - 数组排序的最佳实践,PHP 还是 Javascript?

javascript - JQuery Isotope - 将边距应用于元素的最佳方法是什么?

javascript - 从interval到requestAnimationFrame

javascript - 了解 setInterval 中剩余的时间并将其应用于计时器的暂停和恢复

jquery - setinterval() 和clearinterval() - 清除后,不会自动设置动画

sql - PostgreSQL 的 EXTRACT(QUARTER FROM <interval>) 是基于 1 的吗?