Отвечая на ваш вопрос, вы можете сделать следующее:
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()
вернется местное время клиента. Так, на самом деле, новости будут обновляться чаще между 7AM и 9AM местного времени. Если у вас есть пользователи из разных часовых поясов и вы хотите, чтобы они чаще получали новости от 7AM до 9AM в вашем часовом поясе, вы можете использовать getUTCHours
.
Например, я нахожусь в GMT + 6 часового пояса, и если у меня был этот сайт, он будет:
var hour = new Date().getUTCHours();
return (hour >= 1 && hour < 3) ? 300000 : 540000;
, потому что 1 утра и 3 утра UTC являются 7 АМ и 9 утра в UTC + 6.
Большое спасибо ......... – Pawan