什么是防抖和节流?如何实现防抖和节流? 根据鼠标移动事件获取当前鼠标的坐标值,实现“普通鼠标移动”、“防抖效果”、“节流效果”、“Bom浏览器对象模型”。

1、什么是防抖:

规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。

2、原理:

原理是维护一个计时器,规定在delay时间后触发函数,但是在delay时间内再次触发的话,就会取消之前的计时器而重新设置。这样一来,只有最后一次操作能被触发。

3、常用场景:

1、 实时搜索框(根据输入框的数据发送ajax请求)(keyup)
2、文本输入的验证(连续发送文字发送ajax请求验证,但只验证最后一次输入的内容)(input)
3、判断scroll是否滚动到底部(scroll)
4、按钮提交事件

 function debounce(callback, delay) {
   var t = null;
   return function () {
     clearTimeout(t);
     t = setTimeout(callback, delay);
   };
 }

二、节流(throttle)


1、什么是节流:

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时,重新触发定时器。

2、原理:

在第一次触发了setTimeout后,先把阀门关闭(使用一个Boolean变量),等执行完后再把阀门打开

3、常用场景:

1、窗口调整(resize)
2、页面滚动请求(scroll)
3、DOM元素的拖拽功能实现(mousemove)
4、类似电商抢购商品时的疯狂点击抢购按钮(mousedown)

function throttle(fn, wait) {
  let time
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值