【发布时间】:2025-12-30 21:05:16
【问题描述】:
我需要创建一个简单但准确的计时器。
这是我的代码:
var seconds = 0;
setInterval(function() {
timer.innerHTML = seconds++;
}, 1000);
恰好在 3600 秒之后,它会打印大约 3500 秒。
为什么不准确?
如何创建准确的计时器?
【问题讨论】:
-
更改 timer.innerHTML 并不总是即时。您是如何衡量“正确”时间的?
-
您受制于浏览器(和主机操作系统)。您可以使用
setTimeout()而不是setInterval(),跟踪时间漂移并相应地调整每个睡眠时间。 -
您可能会尝试使用 setTimeout 而不是 setInterval 使用各种回调。也许另一种方法是使用时间对象?也许渲染时刻和当前时间之间的差异更精确(但不确定)。
-
如果不能使用
Date对象,也可以依赖setTimeout()函数,每隔N秒通过ajax与服务器更新的time()重新同步. -
有趣的是,它的时间更少,而不是更多。我可以完全理解它需要更长的时间,但更少是很奇怪的。
标签: javascript time setinterval