Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.08.2015, 13:18
Аспирант
Отправить личное сообщение для VolodinAS Посмотреть профиль Найти все сообщения от VolodinAS
 
Регистрация: 24.11.2012
Сообщений: 44

Как удалить все таймеры на странице?
ajaxом подгружаю страницу, где есть таймер. Если подгрузить несколько раз - будет несколько таймеров, которые будут в свое время делать запрос и получится не 1 раз в 5 секунд, а несколько раз в секунду. Как можно удалить таймеры? Или может определить их "местоположение"?
Ответить с цитированием
  #2 (permalink)  
Старый 11.08.2015, 13:48
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

таймер типично удаляется по id
tid=setInterval(fu, 100)
clearInterval(tid)
Ответить с цитированием
  #3 (permalink)  
Старый 11.08.2015, 14:20
Аспирант
Отправить личное сообщение для VolodinAS Посмотреть профиль Найти все сообщения от VolodinAS
 
Регистрация: 24.11.2012
Сообщений: 44

это до перезагрузки. Если после подгрузки ajax попытаться очистить - - пишет, что нет такой переменной, выдаст ошибку и не продолжит.
Ответить с цитированием
  #4 (permalink)  
Старый 11.08.2015, 15:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

VolodinAS,
Выносите определение переменной до подгружаемых блоков
Или создайте объект на window window.Myvar = {} , и к нему привязывайте глобальные передаваемые переменные
Вне подгружаемого:
Myvar.tid1 = false;Myvar.tid2 = false;

Внутри:
clearInterval(Myvar.tid1);
Myvar.tid1 = setInterval(fu, 100)

Последний раз редактировалось Deff, 11.08.2015 в 15:32.
Ответить с цитированием
  #5 (permalink)  
Старый 18.08.2015, 12:28
Аспирант
Отправить личное сообщение для VolodinAS Посмотреть профиль Найти все сообщения от VolodinAS
 
Регистрация: 24.11.2012
Сообщений: 44

Хм... Большое спасибо, попробую пользоваться
Ответить с цитированием
  #6 (permalink)  
Старый 18.08.2015, 14:35
Аспирант
Отправить личное сообщение для VolodinAS Посмотреть профиль Найти все сообщения от VolodinAS
 
Регистрация: 24.11.2012
Сообщений: 44

Сообщение от Deff Посмотреть сообщение
VolodinAS,
Выносите определение переменной до подгружаемых блоков
Или создайте объект на window window.Myvar = {} , и к нему привязывайте глобальные передаваемые переменные
Вне подгружаемого:
Myvar.tid1 = false;Myvar.tid2 = false;

Внутри:
clearInterval(Myvar.tid1);
Myvar.tid1 = setInterval(fu, 100)
Итак, начну с того, что я собрал всевозможные таймеры на своих страницах, дал им имена, откорретировал, сделал так, чтобы у них был только 1 запуск даже после перезагрузки.
Создал отдельный js-файл, там прописал объект TIMERS и через TIMERS.имя_таймера прописал false.

Теперь основная история. У меня каждые 5 секунд идет запрос на файл, который отдает юзеру кол-во старых сообщений в чате и количество того, что он прочитал. Если есть разница - подгрузить недостающие. setInterval на эту вещь прописан.
В самом низу страницы прописал функцию, которая перебирала объект TIMERS и выводила через console.log() все переменные объекта TIMERS, не равные false.
Также, создал еще одну функцию, которая переходит в другой раздел. Там я прописал clearInterval для этой функции:
function startGame(par){
	if (par == 1){
		$('#dark').show(1000);
		$('#newgame').show(1000);
		$('#interface').hide(1000);
	} else {
		if (par == 2){
			var data = $('#startNewGame').serialize();
			$('#dark').hide(1000);
			$('#newgame').hide(1000);
			clearInterval(TIMERS.checkNewMessanges); // удалить таймер проверки новых сообщений
			TIMERS.bidSelector = false;
			TIMERS.gameSelector = false;
			TIMERS.checkNewMessanges = false;
			loadPage('startGame<?=$pvp?>',data);
		} else {
			if (par == 3){
				$('#dark').hide(1000);
				$('#newgame').hide(1000);
				$('#interface').show(1000);
			}
		}
	}
}


И вот, когда я перешел, я увидел в консоли это:
Код:
---
TIMERS.checkNewMessanges: 9611
TIMERS.logtimers: 8
, а во вкладке Network функция продолжала парсить сообщения. Вопрос - что я сделал не так?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить все созданные функции и обработчики событий - на документе Deff Events/DOM/Window 5 12.08.2012 21:31
Как удалить все обработчики события элемента FINoM Общие вопросы Javascript 10 28.12.2011 13:56
как удалить все IMG содержащие src="www.site.ru/killme.jpg";" ? DjDiablo jQuery 2 26.02.2011 23:22
Как удалить из памяти весь XML документ? EisBerg Events/DOM/Window 1 03.04.2010 14:45
Как удалить все пустые элементы UL smashercosmo Events/DOM/Window 13 25.02.2009 09:03