Продолжайте работать setInterval, пока вкладка полностью закрыта - PullRequest
0 голосов
/ 24 июня 2018

Попытка создать часы реального времени, использующие setInterval (в сантисекундах), но я хочу, чтобы они запускались, когда вкладка не открыта или даже когда компьютер выключен. Это вообще возможно? Если вы слышали о кликере cookie-файлов игры, я почти уверен, что он запускается, когда вкладка полностью закрыта, поэтому как мне его воспроизвести, и если я не могу, есть ли другие способы, которые я могу использовать, чтобы сделать цифровые часы?

1 Ответ

0 голосов
/ 24 июня 2018

Невозможно запустить код , когда вкладка закрыта или аппарат выключен.Лучшее, что вы можете сделать, - это периодически сохранять информацию в localStorage, а затем всякий раз, когда сценарий запускается снова, извлекать сохраненную информацию из localStorage и выполнять все вычисления, необходимые для обновления.Или, если она проста, как дата, вы можете просто проверять Date.now() каждый раз, когда вкладка открывается.

Вот очень упрощенная реализация:

const info = localStorage.savedInfo
  ? JSON.parse(localStorage.savedInfo)
  : { count: 0, date: Date.now() };
const now = Date.now();
if (info.date < now) {
  info.count += Math.floor((now - info.date) / 1000);
  info.date = now;
}
function tick() {
  info.count++;
  console.log(info.count);
  info.date = Date.now();
  localStorage.savedInfo = JSON.stringify(info);
  setTimeout(tick, 1000);
}
tick();

https://jsfiddle.net/gn9128ea/1/

...