为什么每次都会增加?
我想了解为什么计时器的数量在使用时不断增加。
每次都应该从一个新的数字开始吗?
为什么每次增加 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);
}
我需要 window.clearTimeout(timer);函数内部?如果我愿意的话会有什么问题吗?
您可以在此处尝试一下。
谢谢。
I want to understand why the number of timer
keeps increasing whenever it is in use.
Should it start from a fresh number each time?
And why does it increase 2 or 4 each but not 1?
$(document).ready(function(){
endAndStartTimer();
});
var timer;
function endAndStartTimer() {
window.clearTimeout(timer);
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},1000);
alert(timer);
}
Do I need window.clearTimeout(timer); inside the function? What would it be wrong if I d
you can try it here.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一些简单的事实
在设置之前,您不必调用
clearTimeout
。至少在您提供的代码中没有。当我在 FF4 中运行你的 JSFiddle 时,它总是报告 2
定时器 ID 是由浏览器中实现的 Javascript 引擎生成的,所以你没有太多控制它。无论它返回什么,您都必须使用它来清除它。我还没有测试过,但这些 ID 生成器也可能以不同的方式实现。尽管最简单(=最快)的方法是简单地增加最后一个计时器 ID 的 ID。
Some simple facts
You don't have to call
clearTimeout
before setting one. At least not in the code you provided.When I run your JSFiddle in FF4 it always reports 2
Timer IDs are generated by Javascript engine implemented in the browser so you don't have much control over it. Whatever it returns is value that you have to use to clear it. I haven't tested it but it may as well be that these ID generators are implement in a different way. Although the simplest (=fastest) way is by simply incrementing the ID of the last timer ID.
该方法返回唯一的计时器 ID。唯一的目的是为您提供一个将其与clearTimeout 一起使用的句柄。您无法控制生成什么 id。
The method returns unique timer ID. The only purpose is to give you a handle to use it with clearTimeout. You can't control what id is generated.