2015-10-23 9 views
5

Ich habe ein folgendes Codefragment:Kann man clearInterval() vor setInterval() aufrufen?

if (someCondition) { 
    // clear globTimer first?? 
    globTimer = setInterval(function() { 
     someBlinkingCode; 
    }, 1000); 
} else { 
    clearInterval(globTimer); 
} 

aber diesen Teil des Codes kann mehrmals aufgerufen werden, wo someCondition wahr sein wird. Es bedeutet, dass mehrere Intervalle erstellt werden und nicht alle zerstört werden. Und nach einer gewissen Zeit war das Blinken häufiger als 1 Sekunde, also fügte ich clearInterval(globTimer); anstelle des Kommentars hinzu. Diese Änderung hat mein Problem gelöst, aber ist diese Lösung in Ordnung? Ist es in Ordnung, clearInterval() mehrmals für die gleiche Variable oder rufen Sie es für undefined?

+1

Der Code scheint in Ordnung zu mir ... –

Antwort

7

Ja, es ist in Ordnung, clearInterval (und clearTimeout) mit "ungültigen" Bezeichnern aufzurufen. The specification sagt:

Die clearInterval() Methode muss den Eintrag als Handgriff von der Liste der aktiven Intervalle der WindowTimers Objekt, auf dem das Verfahren aufgerufen wurde identifiziert, löschen, wo Handgriff das Argument der Methode, wenn überhaupt geführt ist . (Wenn Griff keinen Eintrag in der Liste der aktiven Intervalle des WindowTimers identifiziert Objekt, auf das die Methode aufgerufen wurde, funktioniert die Methode nichts.)

(Hervorhebung von mir)

+0

also ich will jederzeit mit 'setInterval()/setTimeout()' ist es eine gute Strategie, 'clearInterval()/clearTimeout()' zuerst aufzurufen? Es wird nichts schaden, wenn ich es richtig verstanden habe ... – user3719454

+1

@ user3719454 Wenn es ein Intervall/Timer ist, dass Sie mehrmals aufrufen können und Sie sicher sein wollen, dass Sie nur 1 auf einmal haben, ja - es kann ein sein gute Strategie. –

Verwandte Themen