javascript - Javascript 中的去抖动不适用于滚轮事件

标签 javascript debouncing

我正在尝试使用去抖函数来限制调用的滚动事件的数量。

我不确定为什么这根本不起作用......

有什么想法吗?

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);
  }
}

最佳答案

它会在每个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);
  }
}

关于javascript - Javascript 中的去抖动不适用于滚轮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58357955/

相关文章:

javascript - 数学随机在数组中查找名称而不重复

javascript - 我需要向 div 添加 2 个类,一个是字符串,另一个来自变量

javascript - "setTimeout"VS "debounce"插件 - 延迟事件代码执行

javascript - 如何使用 async/await 去抖动?

java - 多次调用同一方法时取消方法调用

javascript - 获取滚动元素jquery的百分比

javascript - 在 .match() 上使用\和/

javascript - 如何在 typeahead.js 中实现去抖?

javascript - 如何检查样式组件内的状态?

javascript - javascript 中的反跳实时搜索不执行闭包