js setInterval не работает после перезагрузки
Реализую "часики" на странице с использованием setInterval. При загрузке страницы от сервера я получаю переменную serverDate (с использованием вебсокета, эту часть кода я опущу). Упрощенно код выглядит так:
var intervalTask;
onload = function(){
//
incrementTimeAndDisply();
//
}
function incrementTimeAndDisply() {
clearInterval(intervalTask);
intervalTask = setInterval(function () {
serverDate = Number(serverDate)+Number(1000);
setCurDate();//в функции меняю отображение часов на странице
}, 1000);
}
При первой загрузке страницы работает во всех браузерах, часы тикают. После перезагрузки по f5 работает только в фаерфокс. js знаю плохо, куда копать не знаю. Как заставить это работать и после перезагрузки?
Ответы (2 шт):
Я бы не стал менять serverDate. setInterval приходит "примерно" раз в 1000мс.
Получаем serverDate и сразу запомним только разницу:
dateOffset = Date.now() - serverDate.
Делаем функцию const getServerDate = () => Date.now() - dateOffset.
setInterval не нужен.
Ситуация была такая, что сам счетчик оказывается отрабатывал, но ServerDate почему то получалось в предыдущем отображении, а потом происходил перезагрузка страницы и ServerDate был undefined (причем на одних браузерах от ServerDate приходил после перезагрузки а у других до). Изменил механизм получения ServerDate.