我有一个页面,其中包含倒计时和一些数据,我用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分钟后首次呼叫。
如何依赖剩余时间?
答案 0 :(得分: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
。