2017-08-28 24 views
1

给定一个setInterval,它的计时器会不会越来越快? 例如,要运行的代码从2秒开始,然后是1.9s,1.8s,1.7s等...? (在这一点上,我不担心达到零或负)。setInterval递增更快

我目前有:

let speed = 2000; 

let timer = setInterval(function() { 
display(); 
faster(); 
console.log(speed) 
}, speed); 

function faster() { 
speed -= 100; 
} 

function display(){ 
// displays another square on canvas 
} 

我问,如果这是可能的,因为的console.log显示速度确实下降,但显示功能没有以更快的间隔被调用;它总是每2秒钟被调用一次。因此,setInterval的速度没有变得更快....

+0

您是否尝试过使用'setTimeout',而不是'setInterval'和调用'timer'从计时器回调方法里面? – Thijs

+0

不,您不能更改运行间隔的间隔计时器。你必须清除当前的一个并开始一个新的 - 或者使用setTimeout来开始,如果你想在任何给定的时间间隔内只执行一次。 – CBroe

+0

已经回答了:https://stackoverflow.com/questions/28287914/how-to-change-the-speed-of-setinterval-in-real-time –

回答

2

编号当启动定时器时,setInterval()速率固定为第二个参数的值。

您可以使用setTimeout()代替,在回调的每次调用重建定时器:

var rate = 100; 
setTimeout(function callback() { 
    // do something 
    setTimeout(callback, rate - 10); 
});