Декоратор с использованием 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 миллисекунд.
Заранее спасибо.
|