Timer spielen in JavaScript eine entscheidende Rolle für die Planung von Aufgaben und die Implementierung von Echtzeitfunktionen. Aufgrund der asynchronen Natur der JavaScript-Ausführung kann es jedoch schwierig sein, die Genauigkeit von Timern sicherzustellen.
Das von Ihnen bereitgestellte Codefragment verwendet die setInterval-Funktion, um jeweils einen Zähler zu erhöhen zweite. Sie haben jedoch beobachtet, dass der Zähler nach 3600 Sekunden nur noch etwa 3500 Sekunden erreichte. Dies liegt daran, dass setInterval und setTimeout nicht von Natur aus genau sind. Sie neigen zu Verzögerungen und Abweichungen im Laufe der Zeit.
Um einen genauen Timer zu erstellen, wird empfohlen, stattdessen das Datumsobjekt zu verwenden. Mit dem Date-Objekt können Sie die aktuelle Uhrzeit mit Millisekundengenauigkeit ermitteln. Sie können die Logik Ihres Timers auf der Differenz zwischen der aktuellen Zeit und einer Startzeit basieren, etwa so:
var start = Date.now(); setInterval(function() { var delta = Date.now() - start; // milliseconds elapsed since start ... output(Math.floor(delta / 1000)); // in seconds }, 1000); // update about every second
Für Timer-Anwendungen, die ein konstantes Intervall ohne Abweichungen erfordern , selbsteinstellende Timer sind eine bessere Option. Sie passen die Verzögerung zwischen den Timeouts dynamisch an die tatsächlich verstrichene Zeit an. Dieser Ansatz stellt sicher, dass der Timer auf dem richtigen Weg bleibt:
var interval = 1000; // ms var expected = Date.now() + interval; setTimeout(step, interval); function step() { var dt = Date.now() - expected; // the drift (positive for overshooting) ... // do what is to be done expected += interval; setTimeout(step, Math.max(0, interval - dt)); // take into account drift }
Das obige ist der detaillierte Inhalt vonWie kann ich genaue JavaScript-Timer erstellen, die Abweichungen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!