我正在尝试创建一个基于服务器时间的倒数计时器。
我最初让服务器设置了剩余时间,并且只做了setTimeout
1 秒来减少时间。
我发现了两个问题:
- 从服务器设置时间到呈现客户端页面和 JavaScript 开始运行之间存在延迟。延迟量取决于用户互联网连接和计算机/JavaScript 引擎的速度。
- 我认为
setTimeout
1 秒可能在较慢的计算机上落后了一点。
我更改了它,以便服务器设置结束时间,客户端上的 JavaScript 将花费时间(以 UTC 为单位)并计算剩余时间。然后它将在每个setTimeout
回调中执行此操作。这使得时间和倒计时完美。如果客户端具有快速的计算机/JavaScript 引擎,则计时器将停留在页面上。如果计算机/JavaScript 引擎速度较慢,您可能会看到这里和那里跳过一秒钟,但时间永远不会关闭。
到目前为止,我发现此方法存在 1 个问题:
- 每个客户的时钟可能不同。
因此,如果客户的计算机上的时间不正确,剩下的时间可能是几秒钟或 30 秒,甚至是休息几天。
有没有办法让我根据服务器的结束日期准确地剩余时间?