【问题标题】:How to change the interval dynamically when using setInterval使用 setInterval 时如何动态更改间隔
【发布时间】:2016-05-28 07:18:44
【问题描述】:

我有这个小提琴:https://jsfiddle.net/reko91/stfnzoo4/

我目前正在使用 Javascripts setInterval() 将字符串记录到控制台。

我想要做的是,在这个 setInterval 函数中检查区间变量是否发生了变化,如果有,在 setInterval 函数中更改区间。我可以通过单击一个按钮将区间变量降低 100(加速函数)。

这可能吗?

有人提到这个:Changing the interval of SetInterval while it's running

但这是使用计数器,所以他们只运行一定次数。我需要运行它多长时间,但要更改再次调用该函数的速度。

代码如下:

var interval = 2000;

setInterval(function() {
  interval = getInterval();
  console.log('interval')
}, interval);


function getInterval() {
  return interval;
}


$('#speedUp').on('click', function() {
  interval -= 100;
  console.log(interval)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='speedUp'>
  speed up
</button>

【问题讨论】:

标签: javascript jquery setinterval


【解决方案1】:

我会停止间隔并以不同的时间开始一个新的间隔

var interval = 2000;
var intervalId;

// store in a function so we can call it again
function startInterval(_interval) {
  // Store the id of the interval so we can clear it later
  intervalId = setInterval(function() {
    console.log(_interval);
  }, _interval);
}


function getInterval() {
  return interval;
}


$('#speedUp').on('click', function() {
  interval -= 100;
  // clear the existing interval
  clearInterval(intervalId);
  // just start a new one
  startInterval(interval);
  console.log(interval)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='speedUp'>
  speed up
</button>

【讨论】:

  • 太好了,我提到的那个答案有一个与此类似,但这完美地回答了它。谢谢
  • 是的,链接的是关于间隔的一致变化,尽管您的情况需要动态更改。您可以预设“时间”并让用户选择:p EX。 '去超快!','乌龟慢!'
  • 正是我所需要的 ;) 再次感谢
  • 点击按钮的 /slight/ 问题会停止当前运行间隔并开始新的运行间隔。最终效果是,如果您有一个预定的间隔即将到来,它就会被跳过。另一方面,如果您在加速时强制代码运行,您最终可能会加倍工作,具体取决于您正在检查的 what 这可能是问题,也可能不是问题。
猜你喜欢
  • 1970-01-01
  • 2010-11-19
  • 2013-02-12
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 2021-01-28
  • 2019-12-23
  • 1970-01-01
相关资源
最近更新 更多