Назад к вопросам
Middle
4
В чём разница между debounce и throttle?
Компании, где спрашивали
МВидео/эльдорадо
Ответ от нейросети
sobes.tech AI
Debounce и throttle — это техники контроля частоты вызова функций, часто используемые для оптимизации событий, например, при вводе текста или прокрутке.
-
Debounce задерживает выполнение функции до тех пор, пока событие не перестанет происходить в течение заданного времени. Иными словами, функция вызовется только один раз после того, как пользователь перестал выполнять действие.
-
Throttle ограничивает выполнение функции, позволяя ей вызываться не чаще, чем раз в заданный интервал времени, независимо от того, сколько раз произошло событие.
Пример:
// Debounce
function debounce(func, delay) {
let timer;
return function(...args) {
clearTimeout(timer);
timer = setTimeout(() => func.apply(this, args), delay);
};
}
// Throttle
function throttle(func, limit) {
let inThrottle;
return function(...args) {
if (!inThrottle) {
func.apply(this, args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
};
}
Debounce подходит для поиска по вводу, когда нужно дождаться окончания ввода, throttle — для событий прокрутки, где важно ограничить частоту вызовов.