1

我有一个页面,其中包括倒计时和一些我用 AJAX 刷新的数据。为了减少服务器上的负载,我按照http://reallifejs.com/brainchunks/repeated-events-timeout-or-interval/上的说明使 AJAX 刷新间隔取决于倒计时的剩余时间

例如,如果剩余时间少于一天,则刷新间隔为一分钟,如果剩余时间大于一天,则刷新间隔为 5 分钟,我有这样的事情:

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

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

setTimeout(doStuff, 60000);

“剩余时间”取自用于刷新的 JSON。现在一切正常。我仍然想做一个改进,因为第一个 AJAX 调用是在加载页面后一分钟完成的(基于上面代码中的最后一个“SetTimeout”)。理想情况下,我会以相同的方式根据休息时间进行第一次通话,即如果还剩一天以上,则在 5 分钟后第一次通话,如果还剩不到一天,则在 1 分钟后第一次通话。

我怎样才能使这取决于剩余的时间?

4

1 回答 1

1

而不是最初调用setTimeout,你不能只调用doStuff吗?

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 回答