如何将javascript倒计时器与服务器同步

时间:2012-04-25 19:54:45

标签: php javascript

我有一个javascript计时器倒计时的拍卖网站。出于某种原因,15-20分钟后,此计时器的实际时间滞后20-30秒。在1小时的过程中,javascript倒计时器可以在至少2-3分钟内关闭。这让用户感到困惑,因为他认为拍卖结束还有2-3分钟。     一旦页面加载,服务器就会给出剩余的拍卖时间,该时间不到2小时。 javascript从那里开始倒计时。所以我的问题是     1)为什么javascript倒计时器会在20-30分钟后滞后几秒到几分钟的实际时间?     2)如何确保定时器同步。我不想使用ajax来获得剩余时间,因为还有许多其他的ajax正在运行。 我的服务器使用Php。

2 个答案:

答案 0 :(得分:8)

您的计时器滞后,因为您使用的是setTimeout()setInterval()。他们不可信任。请使用Date对象来获取准确的当前时间。

您无需同步。只需将拍卖结束时间(以UTC为单位)放入日期变量中,然后倒计时即可。

答案 1 :(得分:1)

  1. 由于您的javascript中发生的许多其他事情,Javascript时间可能会滞后。很大程度上取决于您的具体计时器实现,但Javascript是单线程的,因此任何其他操作都会延迟您的计时器。

  2. 与服务器同步的唯一方法是发送请求。你不能消除这一点。但是你可以只在经过一些计数而不是每次都发送请求。例如,当计时器执行时,每分钟发送AJAX请求进行同步。您可以通过试验找到正确的同步期。