DOM и React Senior DOM на практике обновлено

Работа во вкладке в фоне

Условие

pausableInterval(fn, ms, doc): интервал работает, только пока документ видим. Реагирует на visibilitychange у переданного объекта doc с полем hidden. Верни stop().

Что проверяют тесты

  • работает при видимой вкладке

  • останавливается при уходе в фон

  • возобновляется при возврате

  • stop снимает всё

Как подойти

Page Visibility API экономит батарею и трафик: опрос сервера, анимации и видео останавливают при уходе вкладки в фон. Браузеры и сами тормозят таймеры в фоне, но не прекращают сетевые запросы. Инвариант id === null как признак «таймера нет» защищает от накопления интервалов при частых переключениях.

Подсказки: 2
  1. Двойной запуск интервала - главная опасность: проверяй, что таймера ещё нет.
  2. Начальное состояние тоже надо учесть: вкладка может быть скрытой уже при вызове.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.