gpt4 book ai didi

javascript - 是否可以根据时间调用setInterval?

转载 作者:行者123 更新时间:2023-11-28 18:52:49 27 4
gpt4 key购买 nike

我在我的网站上显示实时新闻,为了获取最新数据,我每 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 分钟后,因为这不是一个页面)收到更新。 “黄金时间”不再)。

但是,请记住,setIntervalsetTimeout 不能保证精确。最好计算一下下次更新的时间,并依赖它。

另一个重要说明: new Date() 将返回客户端的本地时间。所以,实际上,本地时间早上 7 点到 9 点之间新闻更新会更频繁。如果您的用户来自不同时区,并希望他们在您所在时区的上午 7 点到 9 点之间更频繁地接收新闻,那么您可能需要使用 getUTCHours

例如,我位于 GMT+6 时区,如果我有这个网站,它将是:

var hour = new Date().getUTCHours();
return (hour >= 1 && hour < 3) ? 300000 : 540000;

因为 UTC+6 中的凌晨 1 点和凌晨 3 点分别是上午 7 点和上午 9 点。

关于javascript - 是否可以根据时间调用setInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34198376/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com