使用服务器时间的JavaScript倒计时
我正在尝试创建一个基于服务器上的时间的倒计时计时器 我最初让服务器设置剩余时间,只是做了一个使用服务器时间的JavaScript倒计时,javascript,timer,countdown,Javascript,Timer,Countdown,我正在尝试创建一个基于服务器上的时间的倒计时计时器 我最初让服务器设置剩余时间,只是做了一个setTimeout1秒,这将减少时间 我发现这有两个问题: 从服务器设置到呈现客户端页面和JavaScript开始运行的时间都有延迟。滞后量取决于用户互联网连接和计算机/JavaScript引擎的速度 我认为,在速度较慢的计算机上,1秒的设置超时时间可能有点落后 我更改了它,这样服务器将设置结束时间,客户端上的JavaScript将使用时间(UTC)并计算剩余时间。然后,它会在每次setTimeout回
setTimeout
1秒,这将减少时间
我发现这有两个问题:
setTimeout
回调时执行此操作。这使时间和倒计时变得完美。如果客户端有一个快速的计算机/JavaScript引擎,计时器将保持在页面上。如果计算机/JavaScript引擎速度较慢,您可能会看到在这里或那里跳过一秒钟,但时间永远不会停止
到目前为止,我发现此方法存在1个问题:
有没有办法根据服务器的结束日期精确计算剩余时间?我不知道您需要什么样的解决方案,但考虑到网络和页面呈现延迟,不可能让客户机-服务器协议比一秒钟好得多。我建议您每5秒或10秒进行一次ajax轮询,并相应地调整计时器。还有一种基本上是“反向”的ajax,它可以将时间推送到客户端。但无论哪种方式,您仍然需要应对网络和渲染延迟