是否可以基于时间调用setInterval
Is it possible to call setInterval based on time based?
我在我的网站上显示实时新闻,为了获得最新数据,我每9分钟使用一次setInterval,如下所示
$(document).ready(function() {
displaylivenews();
setInterval(displaylivenews, 540000);
});
function displaylivenews() {
alert('calling ajax to getting latest data ');
}
所有这些都很好,我的问题是,如果时间在早上7点到9点之间,我想更频繁地打电话,每5分钟打一次??
是否可以基于时间调用setInterval??
http://jsfiddle.net/mwv6r0df/
回答您的问题时,您可以执行以下操作:
function getRefreshPeriod()
{
var hour = new Date().getHours();
return (hour >= 7 && hour < 9) ? 300000 : 540000;
}
function displaylivenews() {
alert('calling ajax to getting latest data ');
setTimeout(displaylivenews, getRefreshPeriod());
}
setTimeout(displaylivenews, getRefreshPeriod());
我使用setTimeout
是为了正确处理"边界"情况
例如,如果用户在上午08:46打开页面,他将在08:51(5分钟后)、08:56、09:01、09:10(9分钟后,因为现在不再是"黄金时段")获得更新。
但是,请记住setInterval
和setTimeout
不能保证精确。计算下一次更新的时间并依赖它是一个更好的想法
另一个重要注意事项:new Date()
将返回客户端的本地时间。因此,实际上,新闻会在当地时间早上7点到9点之间更新得更频繁。如果您有来自不同时区的用户,并且希望他们在您时区的上午7点到9点之间更频繁地接收新闻,那么您可能需要使用getUTCHours
。
例如,我位于GMT+6时区,如果我有这个网站,它将是:
var hour = new Date().getUTCHours();
return (hour >= 1 && hour < 3) ? 300000 : 540000;
因为UTC的凌晨1点和凌晨3点分别是UTC+6的上午7点和上午9点。
相关文章:
- 在指定时间后多次调用Javascript中的函数
- 有没有更好的方法可以测量从Ajax调用返回数据所需的总时间
- 我需要在每5秒内调用一个函数,并重置持续时间
- 在indexedDB中调用onupgradewneed方法的时间和原因
- jasmine 2-在jasmine指定的超时时间内未调用异步回调.DEFAULT_TIMEOUT_INTERVAL
- setTimeout() 函数在超时持续时间之前调用
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 从具有间隔时间的 javascript 自动调用 jsp
- 为什么这个 AJAX 调用需要这么长时间
- 一段时间后调用函数,但只调用一次
- 如何在特定时间从javascript调用C#中的函数
- JS'加载'函数在同一时间调用
- 在一小段时间的按键事件后,在angular js中进行get调用
- 使用周期性时间调用 Audioparam 方法
- 过滤集合上的Angular watch侦听器在错误的时间调用
- 是否可以基于时间调用setInterval
- 动画回调在错误的时间调用
- 多少时间调用CDN jquery添加
- 如何在特定时间调用 JavaScript 函数
- 如何实例化一个具有由函数设置的属性的对象,即在正确的时间调用它们