javascriptタイマーがカウントダウンしているオークションサイトがあります。何らかの理由で15〜20分後、このタイマーは実際の時間より20〜30秒遅れています。1時間の間に、javascriptカウントダウンタイマーは少なくとも2〜3分オフになる可能性があります。オークションが終了するまでまだ2〜3分あると彼は考えているため、これはユーザーを混乱させます。ページが読み込まれると、サーバーはオークションの残り時間を2時間未満で提供し、javascriptはそこからカウントダウンを開始します。だから私の質問は1)javascriptカウントダウンタイマーが実際の時間より数秒から数分遅れているのはなぜですか?2)タイマーが同期していることを確認するにはどうすればよいですか。他にも多くのajaxが実行されているため、残り時間を取得するためにajaxを使用したくありません。私のサーバーはPhpを使用しています。
質問する
2920 次
2 に答える
9
setTimeout()
またはを使用しているため、タイマーが遅れていますsetInterval()
。彼らは信頼できません。Date
代わりにオブジェクトを使用して、正確な現在の時刻を取得してください。
同期する必要はありません。オークション終了時刻 (UTC) を日付変数に入れ、それまでカウントダウンします。
于 2012-04-25T19:58:25.887 に答える
1
Javascript で発生する他の多くのことが原因で、Javascript の時間がおそらく遅れています。特定のタイマーの実装に大きく依存しますが、Javascript はシングル スレッドであるため、他の操作によってタイマーが遅延します。
サーバーと同期する唯一の方法は、リクエストを送信することです。それをなくすことはできません。ただし、毎回ではなく、数回カウントした後にのみリクエストを送信できます。たとえば、タイマーが実行されるたびに、同期するために AJAX 要求を送信します。実験することで、適切な同期期間を見つけることができます。
于 2012-04-25T20:01:04.770 に答える