Как заставить setTimeout работать в фоновом режиме?

У меня есть js функция, которая срабатывает раз в 4-ре секунды:

const switcher = () => {
        try {
            if (!currentBlock) {
                currentBlock = firstAnimations;
                startAll(currentBlock);
            } else if (currentBlock === firstAnimations) {
                stopAll(currentBlock);
                currentBlock = secondAnimations;
                startAll(currentBlock);
            } else if (currentBlock === secondAnimations) {
                stopAll(currentBlock);
                currentBlock = thirdAnimations;
                startAll(currentBlock);
            } else if (currentBlock === thirdAnimations) {
                stopAll(currentBlock);
                currentBlock = fourthAnimations;
                startAll(currentBlock);
            } else if (currentBlock === fourthAnimations) {
                stopAll(currentBlock);
                currentBlock = fifthAnimations;
                startAll(currentBlock);
            } else if (currentBlock === fifthAnimations) {
                stopAll(currentBlock);
                currentBlock = firstAnimations;
                startAll(currentBlock);
            }
        } catch (e) {
            console.error(e);
            return;
        }
        setTimeout(switcher, 4000);
    };

    switcher();

Но я столкнулся с проблемой: если в браузере переключиться на другую вкладку, или же просто свернуть браузер - эта функция начинает давать сбой по времени (не стыкуется с другими функциями). В общем говоря, setTimeout не работает в фоне. Как это можно исправить?

Я вот какое-то решение нашел подобной проблемы - а вот как к свей функции это прикрутить - не знаю... И подходит ли оно?
  • Вопрос задан
  • 317 просмотров
Решения вопроса 1
DELUX
@DELUX Автор вопроса
Так, как это дело собрано у нас на GSAP - его же средствами и получилось решить проблему - вдруг кому-то так-же поможет:

Вместо:
setTimeout(switcher, 4000);

Я сделал это, и это помогло:
TweenLite.delayedCall (4, switchFunc);
        function switchFunc()
            {
                switcher();
            }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Хорошее обсуждение на тему:
https://stackoverflow.com/questions/6032429/chrome...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы