Ответ
Да, писал. Debounce — это функция, которая откладывает вызов другой функции до тех пор, пока не пройдет определенное время без новых вызовов. Полезно, например, для обработки событий scroll или input.
Пример реализации:
function debounce(func, delay) {
let timeoutId;
return function(...args) {
clearTimeout(timeoutId);
timeoutId = setTimeout(() => {
func.apply(this, args);
}, delay);
};
}
// Использование
const handleInput = debounce((value) => {
console.log('Input value:', value);
}, 300);
inputElement.addEventListener('input', (e) => handleInput(e.target.value));
Ключевые моменты:
- Использует
setTimeoutиclearTimeout - Возвращает функцию-обертку
- Сохраняет контекст вызова через
apply - Подходит для оптимизации частых событий