【问题标题】:Change interval of setInterval [duplicate]setInterval的更改间隔[重复]
【发布时间】:2013-02-12 00:26:49
【问题描述】:

有没有办法在运行时修改 setInterval 函数的调用间隔,而不是删除它 (clearInterval) 并使用不同的值再次恢复?

【问题讨论】:

标签: javascript


【解决方案1】:

使用 setTimeout 代替,另外这是异步 JS 的非阻塞方法:

var interval = 1000;

function callback() {
   console.log( 'callback!' );
   interval -= 100; // actually this will kill your browser when goes to 0, but shows the idea
   setTimeout( callback, interval );
}

setTimeout( callback, interval );

不要使用setInterval,因为在某些情况下(很多setInterval + 长回调,通常比超时时间长),由于队列大小有限,一些回调会被浏览器丢弃并且从未执行过。只有setTimeout 保证执行。

【讨论】:

    【解决方案2】:

    不;如果您使用过setInterval(),则删除间隔并重新添加它是一种方法。

    但是,您可以通过反复调用 setTimeout() 并在最后使用可变延迟来实现相同的超时目标。

    出于好奇,你想修改间隔是做什么的?也许requestAnimationFrame() 可能更合适?

    【讨论】:

    • 这是关于更新具有可变时间尺度的图表。更大的时间尺度=“更重”的数据库请求,但更稀疏的数据点。如果绘图要显示过去 2 分钟内数据点相隔 1 秒的数据,则它应该每 1 秒更新一次。如果用户选择每个数据点来表示过去 20 小时中的 10 分钟,那么没有必要将其更新频率超过 10 分钟一次。
    • @SF。谢谢,这很有趣,并且使您的目标完全合适。
    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多