Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как очищать все возможные интервалы созданные setInterval (https://javascript.ru/forum/misc/78218-kak-ochishhat-vse-vozmozhnye-intervaly-sozdannye-setinterval.html)

maiskiykot 11.08.2019 12:10

Как очищать все возможные интервалы созданные setInterval
 
Сделал моргающую закладку для привлечения внимания к новым сообщениям. Но не могу решить одну проблему. Таймер поступления сообщений установлен на 5 минут и стОит пропустить хоть одно уведомление о поступлении сообщений, как сразу перестает действовать clearInterval. Мне думается потому, что возникает несколько интервалов, а уничтожается только последний. Отсюда вопрос: как гарантированно убить все интервалы? Пробовал и перебором в цикле и по-всякому. Подскажите, если не трудно. Спасибо!

Пока убиваю интервал так
window.onfocus = function() { 
                   clearInterval(interval);
                   document.title = oldTitle;
                };

рони 11.08.2019 13:54

maiskiykot,
что мешает очищать интервал перед назначением нового?

maiskiykot 11.08.2019 16:24

Цитата:

Сообщение от рони (Сообщение 511497)
maiskiykot,
что мешает очищать интервал перед назначением нового?

Мешает то, что не работает. Я уже и так и эдак пробовал - не очищаются все интервалы.

рони 11.08.2019 16:51

maiskiykot,
переменную interval сделайте глобальной

maiskiykot 12.08.2019 15:10

Если задаю переменную window.interval - вообще перестает работать.

ksa 12.08.2019 15:39

maiskiykot, ты бы хоть пример какой тестовый сделал...

maiskiykot 12.08.2019 16:07

Цитата:

Сообщение от ksa (Сообщение 511556)
maiskiykot, ты бы хоть пример какой тестовый сделал...

Вот весь код

var isOldTitle = true; 
                      var oldTitle = "Old"; 
                      var newTitle = "New"; 
                      var interval = null;
                      function changeTitle() { 
                       
                      document.title = isOldTitle ? oldTitle : newTitle; 
                      isOldTitle = !isOldTitle;                        
                      }
                    
                      interval = setInterval(changeTitle, 1000); 
                                    
                window.onfocus = function() { 
                   for (var i = 1;i < 99999;i++)
                   {
                    clearInterval(i);
                   }
                   document.title = oldTitle;
                };

рони 12.08.2019 16:13

... подожду телепатов.

maiskiykot 12.08.2019 18:07

Так я уже все выложил - всю функцию

рони 12.08.2019 18:20

maiskiykot,
не могу ничего посоветовать, возможно вы что-то не договариваите.


Часовой пояс GMT +3, время: 23:56.