Ответ
Throttling — это техника ограничения частоты выполнения функции, чтобы она вызывалась не чаще, чем раз в определённый промежуток времени. Полезно для оптимизации производительности, например, при обработке событий скролла или ресайза.
Пример с setTimeout
:
function throttle(func, delay) {
let lastCall = 0;
return function(...args) {
const now = new Date().getTime();
if (now - lastCall >= delay) {
func.apply(this, args);
lastCall = now;
}
};
}
// Использование
window.addEventListener('resize', throttle(() => {
console.log('Resize handler called');
}, 300));
Отличие от Debouncing: Throttling гарантирует регулярные вызовы, а Debouncing ждёт паузу перед вызовом.