Что такое Debounce

«Что такое Debounce» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Debounce — это техника, ограничивающая частоту вызова функции. Она откладывает выполнение до тех пор, пока не пройдет определенное время без новых вызовов. Полезно для обработки событий, которые могут часто срабатывать (например, ввод в поисковую строку, изменение размера окна).

Пример реализации:

function debounce(func, delay) {
  let timeoutId;
  return function(...args) {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => func.apply(this, args), delay);
  };
}

// Использование
const handleInput = debounce((value) => {
  console.log('Search:', value);
}, 300);

input.addEventListener('input', (e) => handleInput(e.target.value));

Ключевые моменты:

  • Отменяет предыдущий таймер при новом вызове
  • Выполняет функцию только после паузы в вызовах
  • Сохраняет контекст (this) и аргументы