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, время: 06:37. |