Функция debounce позволяет ограничить частоту вызова переданной функции callback. Она задерживает выполнение callback до тех пор, пока не пройдет заданный интервал delay без новых вызовов. Это полезно, например, при обработке событий ввода или прокрутки, чтобы не вызывать функцию слишком часто.
function debounce(fn, delay) {
Функция debounce позволяет ограничить частоту вызова переданной функции callback.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
function debounce(fn, delay) { let timer return function (...args) { clearTimeout(timer) timer = setTimeout(() => fn(args), delay) } }
Ответ
Функция debounce позволяет ограничить частоту вызова переданной функции callback. Она задерживает выполнение callback до тех пор, пока не пройдет заданный интервал delay без новых вызовов. Это полезно, например, при обработке событий ввода или прокрутки, чтобы не вызывать функцию слишком часто.
Пример реализации на JavaScript:
function debounce(callback, delay) {
let timerId;
return function(...args) {
clearTimeout(timerId);
timerId = setTimeout(() => {
callback.apply(this, args);
}, delay);
};
}
// Использование:
const debouncedFunc = debounce(() => console.log('Вызов!'), 300);
window.addEventListener('resize', debouncedFunc);
В этом примере callback будет вызван только после того, как событие resize перестанет происходить в течение 300 мс.