Показать сообщение отдельно
  #1 (permalink)  
Старый 14.11.2013, 23:02
Интересующийся
Отправить личное сообщение для Nikola Flamel Посмотреть профиль Найти все сообщения от Nikola Flamel
 
Регистрация: 10.11.2013
Сообщений: 10

Декоратор с использованием setTimeout
Здравствуйте.
Есть декоратор limited который принимает в качестве аргументов time и func (время выполнения функции, сама функция). Так же декоратор запоминает переменные this и arguments, выполняет функцию через 20 милисекунд с этими переменными.

function limited(time,func){

var newThis=this;
var newArguments=arguments;

if(typeof time === 'function'){
func=time;
time=20;
}

return function(){
setTimeout(func,time);
}

}



Вопрос такой :
Как сделать так, что если во время того как истекает 20 миллисекунд функцию вызывают ещё раз, то мы не начинаем отсчитывать время заново, а просто меняем запомненные this и arguments. Если же время истекло, и функцию снова вызывают, то мы заново запоминаем новые значения this и arguments и заводим счётчик на 20 миллисекунд.
Заранее спасибо.
Ответить с цитированием