Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2011, 22:28
Интересующийся
Отправить личное сообщение для gradus Посмотреть профиль Найти все сообщения от gradus
 
Регистрация: 18.02.2011
Сообщений: 24

setInterval и функции
var chID,tID; 
var t=1;
	function editint(isw){
		if(isw) {
		chID=setInterval("chat()",5000);
		}
		else{
		clearInterval(chID);
			tID=setInterval("edtime()",1000);
			}
		}

		function edtime()
		{ 
		t++;
		if(t==5) { editint(true); t=1; clearInterval(tID); }
		}

function setfrd(id)	{
editint(false);
}

$(document).ready(function(){ 
editint(true);
	});

если заюзать функцию setfrd несколько раз за 5 сек, то editint начинает странно работать уже без перерыва в 5 сек и срабатывает очень очень часто
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2011, 22:47
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

ну и не удивительно.setInterval задаёт повторение функции бесконечное число раз(пока не будет остановлено её выполнение clearInterval) через опр промежуток времени. а ты при истинном условии всё добавляешь и добавляешь их количество-не количество повторений,а количество функций(хотя правильнее будет сказать частоту постановки функции в очередь) каждая из которых будет выполняться бесконечное колво раз через каждые ... миллисекунд

Последний раз редактировалось dmitriymar, 18.02.2011 в 22:53.
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2011, 23:02
Интересующийся
Отправить личное сообщение для gradus Посмотреть профиль Найти все сообщения от gradus
 
Регистрация: 18.02.2011
Сообщений: 24

хм... я написал такой алгоритм: чат обновляется каждые 5 сек, если юзер сам отсылает данные, то 5 секундное обновление отменяется до тех пор когда юзер не использует функции уже 5 секунд и тогда включаем опять автообновление.Подскажите что надо исправить в этом скрипте, а то как я представлял выполнение этого алгоритма разбито в прах
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2011, 23:08
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от gradus
if(isw) {
chID=setInterval("chat()",5000);
}
здесь перед тем как запустить ещё раз её "экземпляр" . отмени сначала предыдущий clearInterval(chID);

chat()-да и просмотри её. код ты её не выложил.чтобы в ней не было ещё создания новых "экземпляров"

Последний раз редактировалось dmitriymar, 18.02.2011 в 23:12.
Ответить с цитированием
  #5 (permalink)  
Старый 18.02.2011, 23:27
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

и лучше здесь использовать http://javascript.ru/setTimeout вместо setInterval
Ответить с цитированием
  #6 (permalink)  
Старый 03.03.2011, 19:32
Интересующийся
Отправить личное сообщение для gradus Посмотреть профиль Найти все сообщения от gradus
 
Регистрация: 18.02.2011
Сообщений: 24

забыл ответить в общем написал вот так
function editint(isw){
		clearInterval(chID);
		clearTimeout(tID);
		if(isw) {
		chat();
		chID=setInterval("chat()",5000);
		}
		else{
			tID=setTimeout(function() { editint(true);  },5000);
			}
		}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
setTimeout setInterval и др. mycoding Общие вопросы Javascript 6 28.10.2010 17:26
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
Еще один вопрос по setTimeout setInterval Хранитель Света Общие вопросы Javascript 5 12.03.2009 22:37
Проблема в document.write при использовании setInterval() GOll Общие вопросы Javascript 21 06.10.2008 17:38