Například nastavuji interval jako
timer = setInterval(fncName, 1000);
a když půjdu a udělám to
clearInterval(timer);
vymaže interval, ale existuje způsob, jak zkontrolovat, že interval vymazal? Zkoušel jsem získat jeho hodnotu, když má interval a když ne, ale oba se zdají být jen čísla.
Odpověď
Neexistuje žádný přímý způsob, jak udělat to, co hledáte. Místo toho můžete nastavit timer
na hodnotu false pokaždé, když zavoláte clearInterval
:
// Start timer var timer = setInterval(fncName, 1000); // End timer clearInterval(timer); timer = false;
Nyní timer
bude buď nepravda, nebo bude mít v daném čase hodnotu, takže to můžete jednoduše zkontrolovat pomocí
if (timer) ...
Pokud to chcete zapouzdřit do třídy:
function Interval(fn, time) { var timer = false; this.start = function () { if (!this.isRunning()) timer = setInterval(fn, time); }; this.stop = function () { clearInterval(timer); timer = false; }; this.isRunning = function () { return timer !== false; }; } var i = new Interval(fncName, 1000); i.start(); if (i.isRunning()) // ... i.stop();