javascript - 基本 Javascript 倒计时器的时间比设置的时间长

标签 javascript countdown countdowntimer

我正在尝试编写一个非常简单的倒计时器。起初,它似乎已经完成并且工作正常。我很兴奋。但后来,在测试后,我意识到 30 分钟的倒计时似乎永远持续下去。所以我调查了一下,发现我的计时器计时为 30 分钟,而在现实世界中,几乎是 50 分钟!

我已经尝试过调试这个东西,但找不到哪里出了问题。起初我认为可能是 setInterval 负责,并且不以精确的一秒间隔工作。但我看不到其他人遇到过这个问题。据说它应该总是有效。而且,当仔细检查时,通过使函数 print put ...getSecond() 数据,它看起来确实工作得很好。然而,时间在某个时刻正在增加!

我已经尝试过这种方法。从 new Date() 函数获取信息,然后用结束时间戳减去开始时间戳...等等。问题是这应该是一个 5-10 分钟的代码工作,因此,以这种方式使其复杂化就达不到目的!

所以我来向你们寻求帮助!我很快就在 this jsFiddle 里设置好了供大家尝试一下,希望有人能看到问题出在哪里。

计时器基本上只是显示分钟数,因为我不希望它计算秒数(我发现,秒数的流逝会让那些必须在特定时间内完成任务的人感到沮丧)。不过,我已经取消隐藏秒数,以便你们可以看到它们。它应该打印出开始时间和结束时间,这样您就可以看到倒计时设置的时间与倒计时结束的实际时间之间的差异。例如,如果尝试 1 分钟倒计时,应该会发现增加了一两秒。如果尝试一下 30 分钟倒计时,应该会发现增加了大约 50 分钟。

最佳答案

At first I thought maybe the setInterval was responsible and not working at exactly one second intervals

是的,您不能期望它每秒准确触发一次,因为计时器基于本地系统时钟周期。例如:如果在系统上,33 毫秒 = 1 个时钟周期 => 1000 秒几乎是 30.3 个时钟周期,但系统必须舍入该值并每 31 个时钟周期触发事件。时间就是这样加起来的。

由于 javascript 是单线程的,执行计时器回调还涉及另一个开销

关于javascript - 基本 Javascript 倒计时器的时间比设置的时间长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18284177/

相关文章:

javascript - 如何使用 ES5 扩展 ES6 类?

javascript - 将一些 html 和 js 写入 iframe,在 IE 中不起作用 :$ is not defined?

javascript倒数计时器删除小时分钟秒..到期后

events - 如何触发一段音频从倒计时时钟播放

android - CountDownTimer 在 IntentService 中不工作

javascript - 如何在发送请求时向 Ajax 响应传递附加参数

javascript - bxslider 滑动对齐中心

Mozilla 和 IE 中的 Javascript 计时器倒计时 - 适用于 Chrome

javascript - 使用javascript NOT php的电子邮件中的倒数计时器gif

android - 将计时器与 ProgressDialog 一起使用