Функция Javascript setInterval зависит от часов, а не от нагрузки - PullRequest
0 голосов
/ 28 августа 2018

Можно ли запустить счетчик setInterval в зависимости от тактовой частоты, а не от нагрузки? Предполагая, что на каждом компьютере минуты часов всегда находятся в одно и то же время.

Если я открываю страницу в 12:01 и мне нужен установленный интервал в 2 минуты, который всегда начинается с 12:00 (или в любой другой час, но в: 00 минут). Я хочу, чтобы событие запускалось в 12:02, 12:04 и т. Д. Независимо от того, загружаю ли я страницу или открываю ее или нет в 12:00.

Ответ может быть и в jquery.

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете перенести дельту в следующий требуемый слот и скорректировать время ожидания.

function out(k, v) {
    console.log(k.toString().padEnd(8), v.toString().padStart(15));
}

var time0 = new Date().getTime(),
    slot = 2 * 60 * 1000,
    time1 = Math.floor(time0 / slot + 1) * slot,
    delta = time1 - time0;

out('slot', slot);
out('delta', delta);
out('time0', time0);
out('time1', time1);

setTimeout(function () {
    var time2 = new Date;
    out('time2', time2.getTime());
    out('real', time2.getTime() - time0);
    console.log(time2.toISOString());
}, delta);
...