javascript - 具有自适应时间间隔的 AJAX 刷新

标签 javascript ajax refresh

我有一个页面,其中包含倒计时和一些数据,我使用 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);

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

关于javascript - 具有自适应时间间隔的 AJAX 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14102215/

相关文章:

javascript - 是否可以用 Blob 替换文件输入?

javascript - 哪一种是最快的方法

php - 如何使用来自 HTML 表单的输入制作 PHP 计算器,但又让它立即给出结果?

javascript - Jquery Ajax调用时如何获取数据值?

ajax - 使用定期 AJAX/XMLHttpRequest 调用时如何修复浏览器的内存增长?

javascript - typescript 允许arguments.callee.name?

javascript - 使用 jquery 执行 "onchange"的正式方法?

wordpress - 添加优惠券代码(wordpress)后如何刷新/重新加载 WooCommerce 结账页面?

PHP 在页面刷新时重新为 MYSQL 添加值

javascript - 如何使用jquery访问这种Json?