简单的防抖和节流的例子

简介: 简单的防抖和节流的例子

先说说我理解的防抖和节流

1.防抖:
在某一段时间内,某个事情只能做一次

比如浏览器的滚动触发事件:

正常滚动的时候 触发的频率是很高的

但是我们只想触发最后那一下 该如何解决呢?

基于上述场景,首先提出第一种思路:在第一次触发事件时,不立即执行函数,而是给出一个期限值比如200ms,然后:

如果在200ms内没有再次触发滚动事件,那么就执行函数
如果在200ms内再次触发滚动事件,那么当前的计时取消,重新开始计时
效果:如果短时间内大量触发同一事件,只会执行一次函数。

实现:既然前面都提到了计时,那实现的关键就在于setTimeout这个函数,由于还需要一个变量来保存计时

let timer = null

  if (timer) clearTimeout(timer);
  timer = setTimeout(() => {
    console.log("do someting");
  }, 200);

复制代码
很简单的几行代码,就实现了防抖

如果用我们玩游戏的时候 技能释放来理解,防抖就是现在服务器很卡很卡 我们一直按技能 没有显示cd倒计时!也没有释放技能

等过了一会 服务器缓过来了,技能释放出来了。。cd倒计时也开始了。。200ms就是我们的服务器延迟。。。

2,节流
同样的,也是某个时间呢,某个事情只能做一次

节流跟防抖的不同区别就是:

还是拿游戏技能来形容,就是我们释放技能的cd倒计时,是不过节流是服务器无延迟的情况下

当时释放了某个技能之后,在cd结束之前,是无法再释放该技能的!

代码实现的话 其实比防抖多加了一个标实!

let timer = null;
let valid = true;
if (valid) {

    valid = false;
    console.log(event);
  }
  if (timer) clearTimeout(timer);
  timer = setTimeout(() => {
    valid = true;
    console.log("重置了 解锁了 可以继续调用");
  }, 2000);

复制代码

下课!

作者: Bill 本文地址: http://biaoblog.cn/info?id=1662346193577

版权声明: 本文为原创文章,版权归 biaoblog 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!

相关文章
|
1天前
15 # 手写 throttle 节流方法
15 # 手写 throttle 节流方法
20 0
|
6月前
节流函数和防抖函数的区别和应用
节流函数和防抖函数的区别和应用
22 0
|
1天前
|
UED
函数防抖
在频繁触发的情况下,只有足够的空闲时间,才执行代码一次,如果没有执行完就清除掉,重新执行逻辑。简单来说,当触发后再次触发,会取消上一次触发的执行,直到最后一次触发后过去设定时间后才执行。
28 5
|
1天前
|
算法 前端开发
2627. 函数防抖
2627. 函数防抖
17 0
|
1天前
14 # 手写 debounce 防抖方法
14 # 手写 debounce 防抖方法
25 1
|
8月前
|
前端开发
手写防抖节流
手写防抖节流
手写防抖节流
|
9月前
什么是防抖和节流,怎么实现一个防抖和节流?
功能:当事件被触发N秒之后再执行回调,如果在N秒内被触发,则重新计时。
|
9月前
|
前端开发 UED
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(一)
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(一)
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(二)
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(二)
|
9月前
|
UED
防抖和节流怎么做
防抖和节流都是为了控制代码执行频率,提高性能和用户体验。
22 0