Timer 为什么每次都会增加?

Timer 为什么每次都会增加?,timer,settimeout,Timer,Settimeout,我想了解为什么每当使用计时器时,计时器的数量不断增加 每次都应该从一个新的数字开始吗 为什么每次增加2或4个,而不是1个 $(document).ready(function(){ endAndStartTimer(); }); var timer; function endAndStartTimer() { window.clearTimeout(timer); //var millisecBeforeRedirect = 10000; timer = window.s

我想了解为什么每当使用
计时器时,计时器的数量不断增加

每次都应该从一个新的数字开始吗

为什么每次增加2或4个,而不是1个

$(document).ready(function(){
    endAndStartTimer();
});

var timer;
function endAndStartTimer() {
  window.clearTimeout(timer);
  //var millisecBeforeRedirect = 10000; 
  timer = window.setTimeout(function(){alert('Hello!');},1000); 
  alert(timer);
}
我是否需要窗口。清除超时(计时器);函数内部?如果我被解雇了会有什么问题

你可以试试

谢谢。

一些简单的事实
  • 您不必在设置前调用
    clearTimeout
    。至少在您提供的代码中没有

  • 当我在FF4中运行JSFIDLE时,它总是报告2

  • 计时器ID是由浏览器中实现的Javascript引擎生成的,因此您无法对其进行太多控制。无论它返回什么,都是您必须用来清除它的值。我还没有测试过它,但这些ID生成器可能是以不同的方式实现的。尽管最简单(=最快)的方法是简单地增加最后一个计时器ID的ID


  • 该方法返回唯一的计时器ID。唯一的目的是为您提供一个句柄,以便将其与clearTimeout一起使用。您无法控制生成的id。

    这些数字是计时器id。每次调用
    setTimeout
    ,都会创建一个新计时器并返回一个新ID。