Обратите внимание, что setTimeout
и setInterval
очень разные функции:
setTimeout
выполнит код один раз после истечения времени ожидания.
setInterval
выполнит код навсегда , с интервалами в указанное время.
Обе функции возвращают идентификатор таймера , который можно использовать для отмены тайм-аута. Все, что вам нужно сделать, это сохранить это значение в переменной и использовать его в качестве аргумента для clearTimeout(tid)
или clearInterval(tid)
соответственно.
Итак, в зависимости от того, что вы хотите сделать, у вас есть два правильных варианта:
// set timeout
var tid = setTimeout(mycode, 2000);
function mycode() {
// do some stuff...
tid = setTimeout(mycode, 2000); // repeat myself
}
function abortTimer() { // to be called when you want to stop the timer
clearTimeout(tid);
}
или
// set interval
var tid = setInterval(mycode, 2000);
function mycode() {
// do some stuff...
// no need to recall the function (it's an interval, it'll loop forever)
}
function abortTimer() { // to be called when you want to stop the timer
clearInterval(tid);
}
Оба очень распространенные способы достижения того же.