Existuje způsob, jak zkontrolovat, zda var používá setInterval()?

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();