Ответ
Throttling (дросселирование) — это паттерн, ограничивающий частоту выполнения функции или обработки событий, чтобы предотвратить перегрузку системы. Он гарантирует, что функция будет вызываться не чаще, чем раз в заданный период времени.
Основное применение:
- Ограничение частоты запросов к API.
- Обработка событий с высокой частотой (например, скролл, изменение размера окна).
- Защита от злоупотреблений (rate limiting).
Пример реализации на JavaScript:
function throttle(func, limit) {
let inThrottle;
return function(...args) {
if (!inThrottle) {
func.apply(this, args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
};
}
// Использование: обработчик скролла сработает не чаще, чем раз в 100 мс
window.addEventListener('scroll', throttle(() => {
console.log('Scroll position:', window.scrollY);
}, 100));
Отличие от Debouncing:
- Throttling выполняет функцию с регулярными интервалами, пока происходит событие.
- Debouncing выполняет функцию только после того, как событие прекратилось на заданное время.