khipster
@khipster

Верно ли написана задержка для функции?

Функция срабатывает по событию oninput, задержка необходима для предотвращения тормозов вызванных слишком частым срабатыванием функции, например при зажатии клавиши backspace.
function f(event) {
	if (f.rest) {
		f.alarm = true; // Ставим будильник, мол функцию пытались вызвать пока она "отдыхала".
		f.this = this; // Записываем текущий объект и объект события.
		f.event = event;
		return;
	}

	// Тело функции.

	f.rest = true; // Отправляем функцию "на отдых".
	setTimeout(function() {
		f.rest = false;
		if (f.alarm) {
			f.alarmt = false;			
			f.call(f.this, f.event); // Вызов запустит еще один таймер, но f.alarm уже будет false.
		}
		
	}, 100);
}
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Зачем такая сложность?
var fTimer;
function f(event) {
    if(fTimer) {
        clearTimeout(fTimer);
    }
    fTimer = setTimeout(function() {
        fTimer = void 0;

        //тело функции
    }.bind(this), 500);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы