Javascript 时间间隔似乎加快了

Javascript 时间间隔似乎加快了,javascript,Javascript,我在一个函数中有一个setinterval,第一次单击时,all看起来很好,但随后的每次单击都会加速这个计时器。我不明白为什么 function startGame() { var myVar=setInterval(function(){myTimer()},100); } 第二次单击时,第一次间隔也起作用,因为此事件在100ms内发生两次。试试这个: var myVar; function startGame() { if(myVar) clearInter

我在一个函数中有一个setinterval,第一次单击时,all看起来很好,但随后的每次单击都会加速这个计时器。我不明白为什么

function startGame() {
    var myVar=setInterval(function(){myTimer()},100);
}

第二次单击时,第一次间隔也起作用,因为此事件在100ms内发生两次。试试这个:

var myVar;
function startGame() {
    if(myVar)
        clearInterval(myVar);
    myVar=setInterval(function(){myTimer()},100);
}
或:


Setinterval将函数设置为每X毫秒运行一次,在您的情况下,我猜您单击一次,它每100毫秒运行一次,然后再次单击,它每100毫秒运行一次(因此,现在平均每50毫秒运行一次)


我建议设置超时,但我认为这也不是你需要的。我想你是想用setinterval作为游戏循环,对吗?在这种情况下,您需要一种只运行一次的方法。

是否需要setTimeout而不是setInterval?我想每十分之一秒调用一次myTimer,而不是一次单击操作在哪里发生?函数
startGame()
是通过单击启动的吗?您可能多次设置计时器,因此您有多个计时器启动,呈现加速的外观。如果是游戏动画(画布?)然后,最好使用requestAnimationFrame进行所有渲染:但我希望每十分之一秒更新一次,而不是一次,StartName会重置myTimer@DirkNachbar第一个示例重置计时器
var myVar;
function startGame() {
    if(!myVar)
        myVar=setInterval(function(){myTimer()},100);
}