【问题标题】:Javascript/Jquery Refresh timerJavascript/Jquery 刷新计时器
【发布时间】:2010-01-02 17:04:59
【问题描述】:

我有一个简单的系统,每隔几秒刷新一次 div:

$(document).ready(function() {
         $("#nownext").load("response.php");
       var refreshId = setInterval(function() {
          $("#nownext").load('response.php?randval='+ Math.random());
       }, 20000);
    });

现在,由于内容是什么,它更有可能在整点或半点更新。 (尽管并非总是如此)。我想做的是让系统在整点前后的几分钟(以及半点钟)之间更频繁地刷新,以使其更精确。

这可能吗/我该怎么做而不会给客户的计算机带来太多压力?

【问题讨论】:

    标签: javascript jquery setinterval


    【解决方案1】:

    使用 setTimeout 而不是 setInterval,这样您就可以动态更改下一个间隔的时间。我不确定在“快速”期间创建和检查 Date() 对象每毫秒的性能影响是什么,但如果有问题,您总是可以将该频率调整为接近每秒。

    start_timer = function(timing) {
       var timer, d = new Date(), min = d.getMinutes(),
         timeout = 20000; /* slow timeout */
       if((min >= 28 && min <= 30) || min >= 58) {
         timeout = 100; /* fast timeout */
       }
       timer = setTimeout(start_timer, timeout);
       // Call your code here.
    };
    
    $(document).ready(function() {
        start_timer();
    });
    

    【讨论】:

      【解决方案2】:

      由于间隔本身是动态的,因此您将不得不改用setTimeout

      类似这样的东西(未经测试):

      $(document).ready(function() {
          $("#nownext").load('response.php?randval='+ Math.random());
          var minutes = new Date().getMinutes(), interval = 60*10*1000; // default 10 mins
          if (minutes <= 10 || (minutes > 30 && minutes < 35) || minutes > 50) {
              // update once-per-minute if within the first/last 10mins of the hour, or 5mins within the half hour
              interval = 60*1000;
          }
          setTimeout(arguments.callee, interval);
      });
      

      【讨论】:

      • 我同意这一点,但他的初始间隔是 20 秒,他要求更多频繁地接近半小时休息。我要注意的唯一一件事就是“给自己拍”,所以我会添加某种“进行中”的状态变量。
      猜你喜欢
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多