【问题标题】:AJAX refresh with adaptive time interval具有自适应时间间隔的 AJAX 刷新
【发布时间】:2012-12-15 15:35:04
【问题描述】:

我有一个页面,其中包含倒计时和一些我用 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 分钟后第一次通话。

如何让这取决于剩余时间?

【问题讨论】:

    标签: javascript ajax refresh


    【解决方案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 尚未加载,则从第一个 AJAX 成功回调中调用 doStuff

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 2016-09-06
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多