私はJavaScriptのタイマーをカウントダウンするオークションサイトを持っています。なんらかの理由で15-20分後にこのタイマーは実際の時間に20-30秒遅れています。 1時間のコースでは、javascriptのカウントダウンタイマーが少なくとも2-3分遅れることがあります。これは、オークションが終了するのにまだ2〜3分かかると思うので、ユーザーを混乱させる。 ページがサーバーにロードされるとオークションの残りの時間が2時間未満の時間になります& JavaScriptはそこからカウントダウンを開始します。だから私の質問は です。1)なぜJavaScriptのカウントダウンタイマーが実際の時間より数秒遅れて20〜30分後に数分遅れるのですか? 2)どのようにタイマーを同期させることができますか?他の多くのAjaxが動いているので、残り時間を得るためにajaxを使いたいとは思わない。 私のサーバーはPHPを使用しています。サーバーとJavaScriptのカウントダウンタイマーを同期させる方法
4
A
答えて
8
setTimeout()
またはsetInterval()
を使用しているため、タイマーが遅れています。彼らは信頼できません。正確な現在の時刻を取得する代わりにDate
オブジェクトを使用してください。
同期する必要はありません。オークションの終了時刻(UTCで)を日付変数に入れ、それをカウントダウンします。
1
Javascriptの時間は、おそらくあなたのjavascriptで起こって他の多くのもので遅れています。多くはあなたの特定のタイマー実装に依存しますが、Javascriptはシングルスレッドなので、他の操作ではタイマーが遅れることになります。
サーバーと同期する唯一の方法は、要求を送信することです。それを排除することはできません。しかし、毎回ではなく、いくつかのカウントの後にのみリクエストを送信することができます。たとえば、タイマーを実行するたびにAJAXの同期要求が送信されます。あなたは、実験によって正しい同期期間を見つけることができます。
関連する問題
- 1. クライアントのWebページタイマーとサーバーを同期させる方法
- 2. 複数のサーバーがデータベースを同期させる方法
- 3. wxListCtrlと同期させる方法
- 4. Core Dataとサーバー側のデータを同期させる最適な方法は?
- 5. ブラウザ(javascript)とサーバー(asp.net Webサービス/データベース)間でオブジェクトマップを同期させる方法を入力しますか?
- 6. phpmyadminデータベースを同期させる方法
- 7. スレッドを同期させる方法
- 8. Angular2 httpを同期させる方法
- 9. JavaScriptの同期方法
- 10. JavaScriptコールバックの同期方法
- 11. クライアントとサーバーの間で同期をとる方法
- 12. JavaScriptライブラリでイベントを同期させる
- 13. iPhoneとRESTサーバーを同期させるためのコード
- 14. クライアントとサーバーとの間でデータを同期させますか?
- 15. 2つのフォルダのリソースをMavenと同期させる方法
- 16. Javascriptクッキータイムアウトとカウントダウンタイマー
- 17. 「アカウントと同期」のユーザーにアカウントデータを変更させる方法
- 18. ファイルを変更データと同期させる最善の方法
- 19. PWMのデューティサイクルを正弦波と同期させる方法は?
- 20. TreeViewとListBoxのSelectedItemを同期させる方法
- 21. Redux状態とURLのハッシュタグパラメータを同期させる方法
- 22. 2組の設定をgitと同期させる方法
- 23. バックグラウンドとcontentscriptの間でメッセージを同期させる方法は?
- 24. Firebaseを他のデータベースと同期させる方法
- 25. Chrome同期XMPPサーバーの認証方法
- 26. 私のアプリケーションをiCloudと連携させてファイルを同期させる方法
- 27. QWidgetsとメニューバーを同期させる方法は?
- 28. gitlabとgithubを同期させる方法
- 29. PyCharmとピップライブラリを同期させる方法
- 30. 写真と写真を同期させる方法
こんにちはベルギー。これをどのように行うことができるか、小さなコードサンプルを教えてください。あなたの助けに感謝。 – Anita
http://www.sitepoint.com/creating-accurate-timers-in-javascript/に例があります。要約すると、新しいタイムアウトを計算するには、 'Date.now()'を使います。次の "tick"がいつ起きるかを知っています。 – Bergi
Excellet Bergi。これはまさに私が望んでいたものです。どうもありがとうございました。 – Anita