Что такое Throttling (ограничение частоты) в программировании?

«Что такое Throttling (ограничение частоты) в программировании?» — вопрос из категории Тестирование производительности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 выполняет функцию только после того, как событие прекратилось на заданное время.