2012-12-31 28 views
1

我有一个页面,其中包含一个倒计时和一些数据,我使用AJAX进行刷新。为了减轻服务器的负载,我做了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分钟后呼叫。

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

回答

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

相关问题