I have a function that sets a timer, and calls itself back upon expiration of the timer.
What I\'d like to know is if it is bad practice to clear the timer at the top o
Yes, that's fine. Also, you should call "setTimeout()" like this:
timer = setTimeout(onAir, 60000);
Yes you can call clearTimeout on a null
variable.
Also i would suggest you change your setTimeout
so it won't use eval
:
timer = setTimeout(onAir,60000);
Yes, you can call a clearTimeout on a null variable and the world won't implode.
Yes you can call clearTimeout(timer)
, but there are some edge cases where it may cause issues.
If timer
had been previously set with some other integer value, you might be killing off a completely unrelated timer.
setTimeout
just returns an integer index for the timer. If you're not sure if a timer has been previously set, you could add a check before calling clearTimeout
:
if (window.timer)
{
clearTimeout(timer);
}
...
timer = setTimeout(onAir, duration);
A solution to the possible pollution of the timer variable is to use a closure:
(function(){
var timer,
duration;
duration = 60000;
window.onAir = function onAir(){
...code...
if (timer){
clearTimeout(timer);
}
timer = setTimeout(onAir,duration);
};
});
Clearing a Timeout raises not problem to me (but i am not a javascript guru).
Btw, you can find intersting things (checking an existing Timeout) on this thread: Check if a timeout has been cleared?