我有一個擁有一個JavaScript計時器倒計時的拍賣網站。出於某種原因,15-20分鐘後,此計時器滯後實際時間20-30秒。在1小時的過程中,javascript倒數計時器可以關閉至少2-3分鐘。這讓用戶感到困惑,因爲他認爲還有2-3分鐘的拍賣結束。 一旦一個頁面加載服務器給出的拍賣剩餘時間是2小時內的任何東西& JavaScript從那裏開始倒計時。所以我的問題是 1)爲什麼在20-30分鐘後,javascript倒數計時器滯後實際時間幾秒到幾分鐘? 2)我如何確保計時器同步。我不想使用ajax來獲取剩餘時間,因爲有許多其他ajax正在運行。 我的服務器使用Php。如何同步服務器的javascript倒數計時器
4
A
回答
8
由於您使用的是setTimeout()
或setInterval()
,因此您的計時器滯後。他們不能被信任。使用Date
對象來獲取準確的當前時間。
您不需要同步。只需將拍賣結束時間(以UTC爲單位)放入日期變量中,然後倒數至此即可。
1
由於在javascript中發生了許多其他事情,JavaScript時間可能會滯後。很大程度上取決於您的特定計時器實現,但Javascript是單線程的,所以任何其他操作都會延遲您的計時器。
與服務器同步的唯一方法是發送請求。你不能消除這一點。但是你可以在一些計數之後而不是每次都發送請求。例如,計時器執行時每分鐘發送一次AJAX請求進行同步。您可以通過試驗找到正確的同步時間。
相關問題
- 1. 使用服務器時間的JavaScript倒數計時器
- 2. 在不同瀏覽器上同步的javascript倒計時
- 3. JavaScript倒數計時器
- 4. Javascript倒數計時器
- 5. 如何同步倒數計時器到所有用戶
- 6. 如何倒數計時器
- 7. jQuery的倒計時/服務器端值
- 8. 同步與服務器時間 - jQuery的倒計時插件和PHP
- 9. 如何同步與服務器時間
- 10. PHP/JS與服務器倒計時
- 11. php倒計時服務器端
- 12. 倒計時計時器與服務器php
- 13. JavaScript的jQuery倒計時計時器
- 14. ASP/AJAX - 與服務器計時器同步的客戶端計時器
- 15. 修復倒計時倒數計時器
- 16. 倒計時 - iPhone倒數計時器
- 17. 與餅乾的JavaScript倒數計時器
- 18. Javascript getDate()倒數計時器的方法
- 19. 倒計時器Javascript或Jquery?
- 20. 倒數計時器
- 21. 倒數計時器
- 22. 倒數計時器
- 23. 倒數計時器?
- 24. 使用Firebase服務器時間戳在Android上創建同步倒數計時器
- 25. jQuery定時器/倒計時使用服務器時間
- 26. JavaScript運輸計時器倒計時
- 27. 倒計時計時器javascript分鐘
- 28. 想要將javascript倒計時同步到服務器時間,而不是客戶端時間
- 29. Socket.io同步倒計時?
- 30. 用javascript創建倒數計時器
Hello Bergi。你可以分享一個小代碼樣本來說明如何做到這一點嗎?感謝你的幫助。 – Anita 2012-04-26 13:30:21
http://www.sitepoint.com/creating-accurate-timers-in-javascript/中有一個例子。簡而言之:每次使用'Date.now()'計算新的超時時間,知道何時應該發生下一個「嘀嗒」。 – Bergi 2012-04-26 15:14:40
Excellet Bergi。這正是我想要的。非常感謝你。 – Anita 2012-04-27 20:23:05