Antworten:
Sie wollen setInterval()
:
var intervalID = setInterval(function(){alert("Interval reached");}, 5000);
Der erste Parameter für setInterval () kann auch eine auszuwertende Codezeichenfolge sein.
Sie können eine periodische Funktion löschen mit:
clearInterval(intervalID);
setInterval()
ist die richtige Antwort auf die Frage, unabhängig vom Parameter. Es ist nur ein Beispiel und beide Methoden sind per Definition korrekt.
Bitte beachten Sie, dass setInterval () häufig nicht die beste Lösung für die regelmäßige Ausführung ist. Dies hängt wirklich davon ab, welches Javascript Sie tatsächlich regelmäßig aufrufen.
z.B. Wenn Sie setInterval () mit einem Zeitraum von 1000 ms verwenden und in der periodischen Funktion einen Ajax-Aufruf tätigen, dessen Rückkehr gelegentlich 2 Sekunden dauert, führen Sie einen weiteren Ajax-Aufruf durch, bevor die erste Antwort zurückkommt. Dies ist normalerweise unerwünscht.
Viele Bibliotheken verfügen über periodische Methoden, die vor den Gefahren einer naiven Verwendung von setInterval schützen, wie beispielsweise das von Nelson gegebene Prototyp-Beispiel.
Beachten Sie Folgendes, um eine robustere periodische Ausführung mit einer Funktion zu erreichen, die einen jQuery-Ajax-Aufruf enthält:
function myPeriodicMethod() {
$.ajax({
url: ...,
success: function(data) {
...
},
complete: function() {
// schedule the next request *only* when the current one is complete:
setTimeout(myPeriodicMethod, 1000);
}
});
}
// schedule the first invocation:
setTimeout(myPeriodicMethod, 1000);
Ein anderer Ansatz besteht darin, setTimeout zu verwenden, aber die verstrichene Zeit in einer Variablen zu verfolgen und dann die Zeitüberschreitungsverzögerung bei jedem Aufruf dynamisch festzulegen, um eine Funktion so nahe wie möglich am gewünschten Intervall auszuführen, jedoch niemals schneller, als Sie Antworten zurückerhalten können.
Jeder hat bereits eine setTimeout / setInterval-Lösung. Ich denke, es ist wichtig zu beachten, dass Sie Funktionen an setInterval übergeben können, nicht nur Zeichenfolgen. Es ist wahrscheinlich ein wenig "sicherer", echte Funktionen anstelle von Zeichenfolgen zu übergeben, die für diese Funktionen "ausgewertet" werden.
// example 1
function test() {
alert('called');
}
var interval = setInterval(test, 10000);
Oder:
// example 2
var counter = 0;
var interval = setInterval(function() { alert("#"+counter++); }, 5000);
Alte Frage aber .. Ich brauchte auch einen periodischen Task Runner und schrieb TaskTimer . Dies ist auch nützlich, wenn Sie mehrere Aufgaben in unterschiedlichen Intervallen ausführen müssen.
// Timer with 1000ms (1 second) base interval resolution.
var timer = new TaskTimer(1000)
// Add task(s) based on tick intervals.
timer.addTask({
name: 'job1', // unique name of the task
tickInterval: 5, // run every 5 ticks (5 x interval = 5000 ms)
totalRuns: 10, // run 10 times only. (set to 0 for unlimited times)
callback: function (task) {
// code to be executed on each run
console.log(task.name + ' task has run ' + task.currentRuns + ' times.');
}
});
// Start the timer
timer.start();
TaskTimer
funktioniert sowohl im Browser als auch im Node. In der Dokumentation finden Sie alle Funktionen.
Sie sollten sich setInterval () und setTimeout () ansehen.
Hier ist ein anständiger Tutorial-Artikel .
ja - zu sehen setInterval
undsetTimeout
für Code zu bestimmten Zeiten ausgeführt werden . setInterval ist derjenige, mit dem Code regelmäßig ausgeführt wird.
Sehen Sie sich eine Demo an und antworten Sie hier zur Verwendung
Verwenden Sie setInterval, da die Funktion regelmäßig ausgeführt werden soll
Der native Weg ist zwar setInterval()
/ clearInterval()
, aber wenn Sie bereits die Prototype- Bibliothek verwenden, können Sie PeriodicalExecutor nutzen:
new PeriodicalUpdator(myEvent, seconds);
Dies verhindert überlappende Anrufe. Von http://www.prototypejs.org/api/periodicalExecuter :
"Es schützt Sie vor mehreren parallelen Ausführungen der Rückruffunktion, sollte die Ausführung länger als das angegebene Intervall dauern (es behält ein internes" laufendes "Flag bei, das gegen Ausnahmen in der Rückruffunktion geschützt ist). Dies ist besonders nützlich, wenn Sie Verwenden Sie eine, um in bestimmten Intervallen mit dem Benutzer zu interagieren (z. B. eine Eingabeaufforderung verwenden oder einen Anruf bestätigen): Dadurch werden mehrere Meldungsfelder vermieden, die alle darauf warten, bearbeitet zu werden. "