Sobes.tech
Back to questions
Middle
5

В чём разница между debounce и throttle?

Companies where asked
МВидео/эльдорадо

Answer from AI

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 — для событий прокрутки, где важно ограничить частоту вызовов.