4

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

4

2 回答 2

9

您的计时器滞后,因为您正在使用setTimeout()or setInterval()。他们不能被信任。改为使用该Date对象来获取准确的当前时间。

您不需要同步。只需将拍卖结束时间(UTC)放入日期变量中,然后倒计时。

于 2012-04-25T19:58:25.887 回答
1
  1. 由于您的 javascript 中发生了许多其他事情,Javascript 时间可能会滞后。很大程度上取决于您的特定计时器实现,但 Javascript 是单线程的,因此任何其他操作都会延迟您的计时器。

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

于 2012-04-25T20:01:04.770 回答