Ответ
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) и аргументы