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 сек и срабатывает очень очень часто |
ну и не удивительно.setInterval задаёт повторение функции бесконечное число раз(пока не будет остановлено её выполнение clearInterval) через опр промежуток времени. а ты при истинном условии всё добавляешь и добавляешь их количество-не количество повторений,а количество функций(хотя правильнее будет сказать частоту постановки функции в очередь) каждая из которых будет выполняться бесконечное колво раз через каждые ... миллисекунд
|
хм... я написал такой алгоритм: чат обновляется каждые 5 сек, если юзер сам отсылает данные, то 5 секундное обновление отменяется до тех пор когда юзер не использует функции уже 5 секунд и тогда включаем опять автообновление.Подскажите что надо исправить в этом скрипте, а то как я представлял выполнение этого алгоритма разбито в прах :)
|
Цитата:
chat()-да и просмотри её. код ты её не выложил.чтобы в ней не было ещё создания новых "экземпляров" |
и лучше здесь использовать http://javascript.ru/setTimeout вместо setInterval
|
забыл ответить в общем написал вот так
function editint(isw){ clearInterval(chID); clearTimeout(tID); if(isw) { chat(); chID=setInterval("chat()",5000); } else{ tID=setTimeout(function() { editint(true); },5000); } } |
Часовой пояс GMT +3, время: 15:52. |