44 Stimmen

Prüfen, ob clearInterval aufgerufen wurde?

Angesichts dieses Codes:

bob = setInterval(function, 1000);
clearInterval(bob);

Gibt es nun eine Möglichkeit zu erfahren, ob dieses Intervall aufgehoben wurde?

Derzeit verfolge ich dies selbst, indem ich die Option ' bob ', aber ich bin neugierig, ob meine zusätzliche Codezeile unnötig ist:

clearInterval(bob);
bob = null;
if (!bob) itIsCleared();

Gracias.

43voto

Rich Punkte 35534

Der Rückgabewert von setInterval ist nur eine eindeutige Kennung die Sie zur Rückgabe an clearInterval . Es handelt sich nicht um ein strukturiertes Objekt mit zusätzlichen Informationen, und es wird auch nicht auf Null gesetzt, wenn Sie clearTimeout .

10voto

Tikkes Punkte 4379

Die Antwort kommt zwar sehr spät, aber wenn Sie etwas wie folgt tun

this.myInterval = setInterval(....);
this.myInterval = clearInterval(this.myInterval);

Es wird die Variable myInterval undefiniert sein, so dass Sie die Löschung des Intervalls überprüfen können, indem Sie if(!this.myInterval)

7voto

Gordon Gustafson Punkte 38406

Bob enthält nur die ID des Intervalls, in dem er gelöscht wurde. Wenn Sie clearInterval aufrufen, wird das Intervall abgerufen, das mit dieser ID verknüpft ist, und es wird gelöscht. Die ID wird überhaupt nicht geändert.

siehe hier für eine Demonstration

Beispiel:

<html>
<head>
<title>Javascript clearInterval</title>
</head>
<body onload="startInterval();">

<center>
    <div id="myTime"></div>

    <input type="button" value="start Interval" onclick="startInterval();" />

    <input type="button" value="stop Interval" onclick="stopInterval();" />
</center>

<script language="javascript">

var interval;

function startInterval()
{
    // setInterval of 1000 milliseconds i.e. 1 second
    // to recall the startTime() method again n again
    interval = setInterval("startTime();", 1000);
}

function startTime()
{
    // Date object to get current time
    var timeFormat = new Date();

    // set the current time into the HTML div object.
    document.getElementById('myTime').innerHTML = timeFormat.toLocaleTimeString();
}

function stopInterval()   //***********IMPORTANT FUNC******************
{
    // clearInterval to stop the setInterval event
    alert(interval);  
    clearInterval(1);

}

</script> 

</body>
</html>

Dies zeigt Ihnen die ID des Intervalls (die zuvor von setInterval zurückgegeben wurde). Wenn Sie wissen, dass die ID des Intervalls 1 ist, können Sie einfach clearInterval(1) verwenden, um das Intervall zu löschen. Ihre Methode, bob auf null zu setzen, ist also eine gute Lösung. Stellen Sie nur sicher, dass !bob nicht true zurückgibt, wenn bob zufällig 0 ist. :D

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X