1

カウントダウンと、AJAX で更新するデータを含むページがあります。サーバーの負荷を軽減するために、 http://reallifejs.com/brainchunks/repeated-events-timeout-or-interval/の指示に従って、AJAX の更新間隔をカウントダウンの残り時間に依存させました。

たとえば、残り時間が 1 日未満の場合は更新間隔を 1 分、残り時間が 1 日を超える場合は更新間隔を 5 分にするには、次のようにします。

var doStuff = function () {
    // Do stuff
    var remainingTime = JSONData.restTime;

    if(remainingTime > one day) {
        setTimeout(doStuff, 300000);
    } else {
        setTimeout(doStuff, 60000);
    }
};

setTimeout(doStuff, 60000);

「remainingTime」は、リフレッシュに使用される JSON から取得されます。今、すべてが正常に動作します。それでも、最初の AJAX 呼び出しはページの読み込みの 1 分後に行われるため (上記のコードの最後の「SetTimeout」に基づいて)、1 つの改善を加えたいと思います。理想的には、この最初の呼び出しを同じ方法で残りの時間に依存させるようにします。つまり、残り 1 日以上の場合は 5 分後に最初の呼び出しを行い、残り 1 日未満の場合は 1 分後に最初の呼び出しを行います。

これを残り時間に依存させるにはどうすればよいですか?

4

1 に答える 1

1

最初に呼び出す代わりに、setTimeoutdoStuff を呼び出すことはできませんか?

var doStuff = function () {
  // Do stuff
  var remainingTime=JSONData.restTime;
  if(remainingTime>one day) {
    setTimeout(doStuff, 300000);
  } else {
    setTimeout(doStuff, 60000);
  }
};

doStuff();

または、JSONDataまだロードされていない場合はdoStuff、最初の AJAX 成功コールバックから呼び出します。

于 2012-12-31T13:34:29.040 に答える