防抖函数(多少秒执行一次)

/**
 * 防抖函数
 */
export const debounce = (handler, delay) => {
    var timer = null;
    return function () {
        var _self = this, _arg = arguments;
        clearTimeout(timer);
        timer = setTimeout(function () {
            handler.apply(_self, _arg);
        }, delay);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 JavaScript 实现函数的方法是:首先定义一个函数,并在其中定义一个定时器;然后在函数的末尾添加一个 if 语句,如果定时器存在,则清除定时器;最后在 if 语句外部添加一个定时器,在执行函数之后设定一个延时。这样,函数执行完毕后,延时过程中如果有新的函数调用,则取消上一次的延时,重新设定新的延时,从而实现了函数。 ### 回答2: 函数是一种常用的优化前端页面性能的方式,它可以限制一个函数在一定时间内只能执行一次。这在一些需要频繁触发事件的情况下非常有用,比如窗口的resize事件和输入框的输入事件。 下面是使用JavaScript编写的一个简单的函数: ```javascript function debounce(func, delay) { let timer; return function() { clearTimeout(timer); // 清除之前的延迟执行函数 timer = setTimeout(() => { func.apply(this, arguments); // 延迟执行函数 }, delay); }; } ``` 这个函数接受两个参数,一个是需要执行函数,另一个是时间间隔。在函数被触发时,它会清除之前的延迟执行函数,然后设置新的延迟执行函数。 比如,我们可以使用这个函数对一个按钮的点击事件进行优化: ```javascript const debouncedClick = debounce(() => { console.log('Button clicked!'); }, 1000); document.getElementById('myButton').addEventListener('click', debouncedClick); ``` 在上面的代码中,当按钮被点击时,函数会确保在1秒内只能执行一次点击事件的回调函数。这可以避免在短时间内多次点击按钮时出现重复的操作。 需要注意的是,函数的时间间隔应根据实际需求进行调整,过小的时间间隔可能会导致函数被频繁执行,而过大的时间间隔可能会影响用户体验。 ### 回答3: 函数的作用是在事件被触发后,指定时间内不再被触发,只有在指定时间过去后才能再次被触发。下面是一个用 JavaScript 编写的函数的示例: ```javascript function debounce(func, delay) { let timer; return function() { clearTimeout(timer); timer = setTimeout(() => { func.apply(this, arguments); }, delay); }; } ``` 上面的代码中,函数 `debounce` 接受两个参数:`func` 是需要函数,`delay` 是指定的延迟时间。函数内部使用了一个 `timer` 变量来保存定时器的 ID。 每当调用函数返回的函数时,会先清除之前的定时器,然后根据指定的延迟时间设定一个新的定时器。当指定的延迟时间过去后,定时器会触发执行函数。 这样,当我们在一个频繁触发的事件上使用函数时,只有当事件停止触发后的指定时间过去后,才会执行函数。这可以避免在短时间内频繁触发函数而影响性能。 使用示例: ```javascript function handleScroll() { console.log('Scroll event'); } const debouncedScroll = debounce(handleScroll, 200); window.addEventListener('scroll', debouncedScroll); ``` 上面的代码中,`handleScroll` 是需要函数,`debouncedScroll` 是经过处理后的函数。通过将 `debouncedScroll` 绑定到 `scroll` 事件上,可以实现在滚动事件停止后的 200 毫秒内不再触发滚动事件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值