我有一个设置计时器的函数,并在计时器到期时调用自身.
我想知道的是清除函数顶部的计时器是不好的做法.
这是因为我将不时地异步调用该函数,如果我不先清除定时器,我将同时运行两个.
我意识到我可以在我对该函数进行另一次调用之前清除计时器,但是我想知道如果我只是在包含计时器的函数内部保持cleartimeout调用它是否会导致任何浏览器出现问题.
另一个想法 - 我可以在进行cleartimeout调用之前测试timer变量,看看它是否是一个计时器?
这是一些示例代码:
function onAir(){
// reset timer
clearTimeout(timer);
$.getJSON("http://mywebsite.com?format=json&callback=?",function(data){
if(data.result == '1'){
do stuff here
}
else{
do other stuff here
}
});
// start timer
timer = setTimeout("onAir()",60000);
}
Run Code Online (Sandbox Code Playgroud)
谢谢你和我分享你的大脑!
肯尼
好的,非常简单的问题.我在javascript参加速成课程.
如果我
timer = setTimeout(..., 500)用来设置定时器,然后clearTimeout(timer)清除定时器,定时器的整数值不会改变,所以我的问题是如何知道定时器是超时还是清除?
我想使用if (timer) {...},但显然正整数总是返回true.
试图清除超时但它不起作用。console.logging 它在初始化和销毁后返回一个数字。
const timer = setTimeout(() => {});
console.log('initialised', timer); // initialised 22
clearTimeout(timer);
console.log('destroyed', timer); // destroyed 22Run Code Online (Sandbox Code Playgroud)
我期待第二个日志返回空值。我也没想到计时器是一个简单的数字。我原以为它是一个对象。clearTimeout 是否在做它应该做的事情?