главная/Задержка вызова функции. Debounce в javascript
Javascript debounce функция

Задержка вызова функции. Debounce в javascript

Если вкратце, то функция debounce используется для вызова какой-либо функции с задержкой при этом отменяя предыдущий вызов.

Допустим у вас есть поле поиска по сайту, и вам нужно отправлять ajax запросы после введения запроса пользователям, но вы не хотите отправлять запрос на каждый нажатый символ. Вот для этого вы и будете использовать debounce, в которой выставите временной интервал превысив который полетит запрос. К примеру, поставив 1000мс функция будет запускаться только после того, как скорость нажатия превысила 1сек.

Пример кода:

const deBounce = (fn, ms) => {
  let timeoutLink;
  
  return function() {
    const functionCall = () => {
      fn.apply(this, arguments);
    }
    
    clearTimeout(timeoutLink);
    
    timeoutLink = setTimeout(functionCall, ms);
  }
}

Код ниже будет использовать debounce при изменении окна браузера и выводить в консоль его размеры. Задержка в 1секунду не даст вызвать ее несколько раз за одну секунду.

window.addEventListener(
  'resize',
  deBounce(() => {
    console.log(window.innerWidth);
    console.log(window.innerHeight);
  }, 500)
);