避免在间隔

时间:2017-09-19 09:28:19

标签: javascript function setinterval execution

我注意到setInterval()函数实际上在间隔开始时运行(如在,接受值),然后等待并在间隔结束时返回结果。 如果值在中间区间发生变化,它仍然会像在开始时那样执行。这导致我的滑块出现不需要的行为。 有没有办法强制setInterval()在间隔的最后?最好没有jQuery。

编辑:当我将我的代码转换为此处发布时,问题就解决了。原来这与我的问题没什么关系。对不起,我一定会在下次发布代码。谢谢你们的答复! :)希望他们将来帮助某人,因为我无论如何都找不到这样的问题。

3 个答案:

答案 0 :(得分:0)

是。递归使用setTimeout,这通常是更好的主意。



function doSomething() {
  setTimeout(function () {
    console.log('something')
    doSomething()
  }, 2000)
}

console.log('start')
doSomething()




答案 1 :(得分:0)

您应该发布一些代码。我不完全确定这是不是你的问题,但如果你看看这个:

setInterval(() => {
  var message = 'ok';
  console.log(message);
}, 1000);

message = 'not ok';

'消息' setInterval中定义的变量的作用域是传递给setInterval的函数。因此,当我尝试在该范围之外更改变量时,它将无法工作。我实际上不小心在窗口对象上创建了一个新变量。

但是,如果我这样做:

var message = 'ok';

setInterval(() => {
  console.log(message);
}, 1000);

message = 'not ok';

'消息'变量已成功更改,setInterval将使用该更改调用变量。

答案 2 :(得分:0)

您可以在window对象上绑定所需的变量。

window.myVariable = 'Important String';

setInterval(function() {
  doSomethingWith(window.myVariable);
}, 2000);

// Variable is changed
window.myVariable = 'Less Important String';