Вопрос проверяет умение управлять частотой выполнения функций при частых событиях, например вводе текста или скролле.
debounce — это техника, при которой функция выполняется только спустя заданное время после последнего вызова. Если за это время функция вызывается снова, таймер сбрасывается. В итоге выполнение происходит один раз, когда события “затихли”. Это помогает уменьшить количество лишних операций.
Debounce — это ограничение частоты вызова функции так, чтобы она выполнялась только после паузы в событиях.
Сначала опишем идею словами: функция “ждёт”, пока события перестанут происходить.
Происходит вызов функции
Запускается таймер
Если вызов повторяется до истечения таймера:
таймер сбрасывается
Функция выполняется только после паузы
function debounce(fn, delay) {
let timer;
return function (...args) {
clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, args);
}, delay);
};
}
Поиск по мере ввода текста
Валидация формы
Автосохранение
Запросы к API при изменении фильтров
Debounce почти всегда используется там, где важно последнее действие, а не каждое промежуточное.
Debounce позволяет вызывать функцию только после того, как поток событий прекратился, снижая нагрузку и количество лишних операций.