Home > Web Front-end > JS Tutorial > How Can I Create Accurate Timers in JavaScript?

How Can I Create Accurate Timers in JavaScript?

Barbara Streisand
Release: 2024-12-25 07:19:33
Original
152 people have browsed it

How Can I Create Accurate Timers in JavaScript?

Creating Accurate Timers in JavaScript

Determining accurate time intervals in JavaScript can be challenging due to the imprecise nature of setTimeout() and setInterval().

Inaccuracy of setTimeout() and setInterval()

setTimeout() and setInterval() rely on the browser's scheduling mechanisms, which can be influenced by system resources and browser activity. This inherent variability can lead to inconsistency and unreliable timing, as demonstrated in the given example.

Solution: Using Date Object

To create accurate timers, consider using the Date object's now() method to retrieve the current millisecond timestamp. This approach provides better precision compared to callback-based methods.

Simple Timer Implementation:

For basic timing scenarios, you can track the time difference explicitly using the following approach:

var start = Date.now();
setInterval(function() {
    var delta = Date.now() - start; // milliseconds since start
    ...
    output(Math.floor(delta / 1000)); // in seconds
}, 1000);
Copy after login

This method tracks the time difference since the start of the timer. To avoid potential value jumps, updating the interval more frequently (e.g., every 100ms) is recommended.

Self-Adjusting Timers

For precise, non-drifting intervals, you can implement self-adjusting timers. These timers adapt the delay for each repeated timeout based on the actual elapsed time:

var interval = 1000; // ms
var expected = Date.now() + interval;
setTimeout(step, interval);
function step() {
    var dt = Date.now() - expected; // drift
    ...
    expected += interval;
    setTimeout(step, Math.max(0, interval - dt)); // adjust delay for drift
}
Copy after login

This approach monitors the time drift and compensates for any inconsistencies, ensuring a more accurate timing cadence.

The above is the detailed content of How Can I Create Accurate Timers in JavaScript?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template