JS实现防抖(Debounce)和节流(Throttle)

本文介绍了防抖(Debounce)和节流(Throttle)两种技术,它们用于限制函数调用频率,分别适用于防止频繁触发和保证在一段时间内仅执行一次。通过示例展示了如何在JavaScript中实现这两种优化方法。
摘要由CSDN通过智能技术生成

防抖(Debounce)和节流(Throttle)是用于限制函数调用频率的两种常用技术,可以帮助你控制事件处理函数的执行次数。下面分别是防抖和节流函数的实现示例。

防抖函数(Debounce)

防抖函数意味着当事件被触发后,要等待一段时间(等待时间间隔)后才执行函数。如果在等待时间内再次触发事件,将重新计时。如实时监听输入事件,防止用户多次点击按钮可用到

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

// 用法示例:
const debouncedFunction = debounce(function() {
  console.log("Debounced function called");
}, 1000);

// 调用 debouncedFunction 会在 1 秒后执行,如果在 1 秒内再次调用,则重新计时
debouncedFunction();

节流函数(Throttle)

节流函数意味着在一段时间内最多只能执行一次函数,无论事件触发频率多高。如滚动事件,表单提交按钮

function throttle(func, delay) {
  let canRun = true;
  
  return function (...args) {
    if (!canRun) return;
    
    canRun = false;
    setTimeout(() => {
      func.apply(this, args);
      canRun = true;
    }, delay);
  };
}

// 用法示例:
const throttledFunction = throttle(function() {
  console.log("Throttled function called");
}, 1000);

// 调用 throttledFunction,每隔 1 秒执行一次,多次调用在等待期间不会执行
throttledFunction();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值