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 шт):

Автор решения: Sergei Kirjanov

Я бы не стал менять serverDate. setInterval приходит "примерно" раз в 1000мс.

Получаем serverDate и сразу запомним только разницу: dateOffset = Date.now() - serverDate.

Делаем функцию const getServerDate = () => Date.now() - dateOffset.

setInterval не нужен.

→ Ссылка
Автор решения: Dmitrii

Ситуация была такая, что сам счетчик оказывается отрабатывал, но ServerDate почему то получалось в предыдущем отображении, а потом происходил перезагрузка страницы и ServerDate был undefined (причем на одних браузерах от ServerDate приходил после перезагрузки а у других до). Изменил механизм получения ServerDate.

→ Ссылка