2

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

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

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

这是否可能/我将如何做到这一点而不会给客户的计算机带来太多压力?

4

2 回答 2

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();
});
于 2010-01-02T17:23:05.297 回答
0

由于间隔本身将是动态的,因此您将不得不使用它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);
});
于 2010-01-02T17:11:28.800 回答