JS 防抖与节流

防抖 debounce:在短时间内连续多次触发某段代码的执行请求时,仅当最后一次触发后的指定时间内不再有新的触发时,才会真正执行该段代码。防抖机制常用于处理频繁触发的事件,如窗口大小调整、输入框实时搜索等场景,以避免不必要的性能开销。

    function mouseMove() {

    }

    element.addEventListener('mousemove', debounce(mouseMove, 500));
    function debounce(fn, t) {
      let timer;
      return function () {
        if (timer) clearTimeout(timer);
        timer = setTimeout(fn, t);
      }
    }

节流 throttle:在连续多次触发某段代码的执行请求时,无论触发频率多高,都会按照预设的时间间隔来执行该段代码。即在第一次触发后,只有超过设定的时间间隔后,才会允许下一次执行。节流机制适用于需要限制执行频率的场景,如滚动事件、按钮防重复点击等,确保代码的执行不会过于频繁。

    function mouseMove() {

    }

    element.addEventListener('mousemove', throttle(mouseMove, 500));
    function throttle(fn, t) {
      let timer;
      return function () {
        if (!timer) {
          timer = setTimeout(function () {
            fn();
            timer = null; // clearTimeout只会清除计时器而不会清除timer自身
          }, t);
        }
      }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值