DOM и React Senior DOM на практике обновлено
Работа во вкладке в фоне
Условие
pausableInterval(fn, ms, doc): интервал работает, только пока документ видим. Реагирует на visibilitychange у переданного объекта doc с полем hidden. Верни stop().
Что проверяют тесты
работает при видимой вкладке
останавливается при уходе в фон
возобновляется при возврате
stop снимает всё
Как подойти
Page Visibility API экономит батарею и трафик: опрос сервера, анимации и видео останавливают при уходе вкладки в фон. Браузеры и сами тормозят таймеры в фоне, но не прекращают сетевые запросы. Инвариант id === null как признак «таймера нет» защищает от накопления интервалов при частых переключениях.
Подсказки: 2
- Двойной запуск интервала - главная опасность: проверяй, что таймера ещё нет.
- Начальное состояние тоже надо учесть: вкладка может быть скрытой уже при вызове.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.