【问题标题】:How do I change my interval within the function itself?如何更改函数本身的间隔?
【发布时间】:2013-11-29 20:07:22
【问题描述】:

所以,这是我用来设置间隔的代码,它每 0.1 秒触发一次 draw()

var intervalTime = 100;
setInterval(draw, intervalTime);
function draw() {
    if( i == 1 ) intervalTime = 50;
}

我想知道当我变为 1 时如何将 intervalTime 更改为 50。上面的代码似乎不是这样工作的。停留在0.1s的间隔时间

【问题讨论】:

  • 改用 setTimeout 来调用函数,然后在函数内部调用。特别是对于小间隔并且如果您的函数需要相当长的时间,这种方法会更好,因为它可以确保至少有 X 毫秒。通话之间。 setInterval 的唯一潜在好处可能是(但不是!)它确实在那些指定的时间点调用该函数,但实际上它只是将它们放入队列中,因此没有好处,只有缺点。我个人建议完全反对 setInterval。计时器的工作原理:ejohn.org/blog/how-javascript-timers-work
  • 或清除间隔并重新创建
  • 一旦将区间速度传递给函数,就无法更改,所以cmets中的上述解决方案之一是唯一的方法。
  • 清除间隔并在一次运行后创建一个新间隔应该从一开始就使用 setTimeout 来完成。每次再次删除它并不是真正的间隔。

标签: javascript function time draw intervals


【解决方案1】:
var intervalTime = 100;
var interval = setInterval(draw, intervalTime);

function draw() {
    if( i == 1 ) {
        clearInterval(interval);
        interval = setInterval(draw, intervalTime);
    }
}

【讨论】:

  • 当你真的只调用一次时,使用 setInterval 是没有意义的。立即使用 setTimeout,无需清除间隔并减少混乱(一年后阅读大量代码并显示“间隔”)。
猜你喜欢
  • 2019-03-27
  • 2014-06-18
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 2020-09-30
相关资源
最近更新 更多