js防抖使用方法

防抖?

是一种在处理频繁触发的事件时用到的技术,它可以限制一个函数在一定时间内只执行一次。这在实际开发中特别适用于处理输入框输入、窗口调整等频繁触发的事件,以减少不必要的重复操作。

它们的主要目的是减少函数的执行次数,从而提高网页的响应速度和性能。

防抖的实现方式不同,但它们的思路相同:通过控制函数的执行频率,避免函数被过于频繁地调用,从而减轻浏览器的负担。

防抖的两种方法

1. 简单版防抖。

简单版防抖的原理是在事件被触发 n 秒后再执行回调函数,如果在这段时间内该事件又被触发,则重新计时。

function debounce(func, delay) {
  let timer;
  return function() {
    clearTimeout(timer);
    timer = setTimeout(() => {
      func.apply(this, arguments);
    }, delay);
  };
}

这里的 func 是需要进行防抖的函数,delay 是防抖时间。函数每次执行时都会清除上一次的计时器,并重新设置计时器。如果在指定时间内没有再次触发事件,则函数就会被执行。

2.带立即执行功能的防抖

带立即执行功能的防抖可以在页面加载后立即执行一次函数,然后在指定时间内再次触发事件时不会立即执行,而是延迟指定时间后执行。

function debounce(func, delay, immediate) {
  let timer;
  return function() {
    clearTimeout(timer);
    if (immediate && !timer) {
      func.apply(this, arguments);
    }
    timer = setTimeout(() => {
      if (!immediate) {
        func.apply(this, arguments);
      }
      timer = null;
    }, delay);
  };
}

这里的 immediate 参数用于控制是否需要立即执行函数。如果为 true,则在页面加载后立即执行一次函数;如果为 false 或者不传入参数,则不会立即执行函数。其他部分与简单版防抖相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值