Мой код:
let isBlack = true;
function animate() {
$(".someDiv").animate({
backgroundColor: isBlack ? "transparent" : 'black'
}, 20);
isBlack = !isBlack;
}
const delay = ms => new Promise(res => setTimeout(res, ms));
async function animateAndWait(msArr) {
for (let i = 0; i < msArr.length; i++) {
animate();
await delay(msArr[i]);
}
}
flashFunction();
async function flashFunction() {
await animateAndWait([300, 50]);
if (myRandomNumberBetween(1, 100) <= 10) {
return delay(3000)
.then(flashFunction);
}
await animateAndWait([300, 400]);
delay(3000)
.then(flashFunction);
}
Делает div мигать пару раз с интервалом ~ 3 секунды.Моя проблема возникает, когда я переключаю вкладки.Этот браузер приостанавливает таймер, пока я нахожусь на другой вкладке, а затем, когда я возвращаюсь к этой вкладке, он мигает (все быстро), которые были пропущены в фоновом режиме.
Я хотел бы как-то приостановитьтаймер в фоновом режиме или очистить интервал.Некоторые ребята задали тот же вопрос, но я не могу здесь включить ответы, которые помогли им.Или, может быть, я просто не знаю как.Это может быть у меня над головой, но если у кого-то есть время, я буду признателен за помощь.
Вот несколько ссылок от парней с похожими проблемами:
recursive setTimeout() пауза на фоне
Анимация останавливается, когда вкладка браузера не видна