Debouncing в Javascript не работает с событием колеса - PullRequest
1 голос
/ 12 октября 2019

Я пытаюсь использовать функцию debounce, чтобы ограничить количество вызываемых событий прокрутки.

Я не уверен, почему это вообще не работает ...

Любойидеи?

window.addEventListener('wheel', () => {
  debounce(scrollSection, 300);
});

const scrollSection = () => {
  console.log(1);
}

const debounce = function(fn, d) {
  let timer;
  return function() {
    let context = this;
    let args = arguments;
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(context, args);
    }, d);
  }
}

1 Ответ

2 голосов
/ 12 октября 2019

создает деблокированную функцию для каждого wheel события. Сначала отмените функцию, затем поместите ее в прослушиватель событий.

window.addEventListener('wheel', debounce(scrollSection, 300));

const scrollSection = () => {
  console.log(1);
}

const debounce = function(fn, d) {
  let timer;
  return function() {
    let context = this;
    let args = arguments;
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(context, args);
    }, d);
  }
}
...