JavaScript防抖

博客

利用一个简单的要求记录一下防抖(多次触发只执行一次)。场景:监听鼠标移动事件,在鼠标移动后输出鼠标的坐标。

let timer = null;

document.addEventListener("mousemove", (e) => {
  
  // 清除之前的计时器
  clearTimeout(timer);

  // 设置新的计时器
  timer = setTimeout(() => {
    // 输出鼠标位置信息
    console.log(`Mouse position: (${e.clientX}, ${e.clientY})`);
  }, 500); // 500毫秒后输出位置信息,你可以根据需要调整时间间隔
});

封装一个简单的防抖函数:


let timeID = null;

addEventListener("mousemove", (e) => {
  let target = stab(e);
  target();
});

// 防抖函数
function stab(e) {
  
  return () => {
    clearTimeout(timeID);
    timeID = setTimeout(() => {
      const h1 = document.createElement("li");
      h1.innerHTML = `${e.clientX + "--------" + e.clientY}`;
      body.appendChild(h1);
    }, 1000);
  };
}

防抖函数的执行原理是通过在事件触发后等待一定时间,如果在这段时间内没有再次触发相同的事件,则执行相应的函数。这样可以避免在短时间内频繁触发事件处理函数,提高程序的性能。

防抖函数通过设置一个计时器来实现等待一定时间后再执行函数的功能。当事件触发时,防抖函数会清除之前的计时器,并设置一个新的计时器,等待一定时间后再执行相应的函数。如果在这段时间内再次触发相同的事件,则会清除之前的计时器并重新设置。这样就能确保在最后一次事件触发后的一定时间内执行函数,实现了防抖的效果。

通过以上原理,防抖函数可以在处理连续触发的事件时,减少不必要的函数执行次数,提高程序的响应性能和用户体验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值