Ich verwende setInterval(fname, 10000);
, um alle 10 Sekunden eine Funktion in JavaScript aufzurufen. Ist es möglich, den Anruf bei einem Ereignis zu beenden?
Ich möchte, dass der Benutzer die wiederholte Aktualisierung von Daten stoppen kann.
Ich verwende setInterval(fname, 10000);
, um alle 10 Sekunden eine Funktion in JavaScript aufzurufen. Ist es möglich, den Anruf bei einem Ereignis zu beenden?
Ich möchte, dass der Benutzer die wiederholte Aktualisierung von Daten stoppen kann.
setInterval()
Gibt eine Intervall-ID zurück, an die Sie übergeben können clearInterval()
:
var refreshIntervalId = setInterval(fname, 10000);
/* later */
clearInterval(refreshIntervalId);
Siehe die Dokumente für setInterval()
und clearInterval()
.
clearInterval
. Ich habewindow.refreshIntervalId
anstelle einer lokalen Variablen verwendet, und es funktioniert großartig!$('foo').data('interval', setInterval(fn, 100));
und es dann mit zu löschen.clearInterval($('foo').data('interval'));
Ich bin sicher, dass es auch eine Nicht-jQuery-Möglichkeit gibt, dies zu tun.Wenn Sie den Rückgabewert
setInterval
einer Variablen festlegen , können Sie ihnclearInterval
stoppen.quelle
Sie können eine neue Variable festlegen und sie bei jeder Ausführung um ++ (eine hochzählen) erhöhen lassen. Dann verwende ich eine bedingte Anweisung, um sie zu beenden:
Ich hoffe, dass es hilft und es richtig ist.
quelle
clearInterval(varName);
. Ich habe erwartetclearInterval
, dass es nicht funktioniert, wenn der Funktionsname übergeben wird. Ich dachte, es erfordert die Intervall-ID. Ich nehme an, dies kann nur funktionieren, wenn Sie eine benannte Funktion haben, da Sie eine anonyme Funktion nicht als Variable in sich selbst übergeben können.$(document).ready(function(){ });
ist jQuery, deshalb funktioniert es nicht. Dies hätte zumindest erwähnt werden sollen.varName
, in der eine unbenannte Funktion gespeichert ist - was? Sie sollten diese Antwort ändern oder notieren, IMHO.In den obigen Antworten wurde bereits erläutert, wie setInterval ein Handle zurückgibt und wie dieses Handle zum Abbrechen des Intervall-Timers verwendet wird.
Einige architektonische Überlegungen:
Bitte verwenden Sie keine Variablen ohne Gültigkeitsbereich. Am sichersten ist es, das Attribut eines DOM-Objekts zu verwenden. Der einfachste Ort wäre "Dokument". Wenn die Auffrischung über eine Start / Stopp-Taste gestartet wird, können Sie die Taste selbst verwenden:
Da die Funktion im Button-Click-Handler definiert ist, müssen Sie sie nicht erneut definieren. Der Timer kann fortgesetzt werden, wenn die Schaltfläche erneut angeklickt wird.
quelle
document
als anwindow
?Bereits beantwortet ... Wenn Sie jedoch einen vorgestellten, wiederverwendbaren Timer benötigen, der auch mehrere Aufgaben in unterschiedlichen Intervallen unterstützt, können Sie meinen TaskTimer (für Knoten und Browser) verwenden.
In Ihrem Fall, wenn Benutzer klicken, um die Datenaktualisierung zu stören. Sie können auch anrufen
timer.pause()
dann ,timer.resume()
wenn sie müssen wieder aktivieren.Sehen Sie hier mehr .
quelle
Mit der Methode clearInterval () kann ein mit der Methode setInterval () festgelegter Timer gelöscht werden.
setInterval gibt immer einen ID-Wert zurück. Dieser Wert kann in clearInterval () übergeben werden, um den Timer zu stoppen. Hier ist ein Beispiel für einen Timer, der bei 30 beginnt und stoppt, wenn er 0 wird.
quelle
@cnu,
Sie können das Intervall stoppen, wenn Sie versuchen, Code auszuführen, bevor Sie Ihren Konsolenbrowser (F12) suchen ... versuchen Sie es mit einem Kommentar clearInterval (Trigger). : P.
Überprüfen Sie beispielsweise eine Quelle:
quelle
Deklarieren Sie die Variable, um den von setInterval (...) zurückgegebenen Wert zuzuweisen, und übergeben Sie die zugewiesene Variable an clearInterval ().
z.B
// Überall dort, wo Sie Zugriff auf den oben angegebenen Timer haben , rufen Sie clearInterval auf
quelle
Sie können das Intervall auch stoppen, indem Sie einen Ereignis-Listener hinzufügen, um beispielsweise eine Schaltfläche mit der ID "Stoppintervall" zu erstellen:
HTML:
Hinweis: Das Intervall wird weiterhin ausgeführt, es wird jedoch nichts passieren.
quelle
So habe ich die clearInterval () -Methode verwendet, um den Timer nach 10 Sekunden anzuhalten.
quelle
Verwenden Sie setTimeOut, um das Intervall nach einiger Zeit anzuhalten.
quelle
Ich denke, der folgende Code wird helfen:
Sie haben den Code zu 100% korrigiert ... Also ... Was ist das Problem? Oder es ist ein Tutorial ...
quelle
Warum nicht einen einfacheren Ansatz verwenden? Fügen Sie eine Klasse hinzu!
Fügen Sie einfach eine Klasse hinzu, die das Intervall anweist, nichts zu tun. Zum Beispiel: beim Schweben.
Ich habe seit Ewigkeiten nach diesem schnellen und einfachen Ansatz gesucht, daher veröffentliche ich mehrere Versionen, um so viele Menschen wie möglich daran zu erinnern.
quelle
this.setInterval(function() { if(!$('#counter').hasClass('pauseInterval')) { //do something } }, 500);
ist alles, was Sie für Code haben. Darüber hinaus ist der Check das erste, was Sie tun, so dass er sehr leicht ist, wenn er schwebt. Dafür ist dieser gedacht: eine Funktion vorübergehend anhalten . Wenn Sie es auf unbestimmte Zeit beenden möchten: Natürlich entfernen Sie das Intervall.