简单的防抖和节流的例子

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

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

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 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!

相关文章
节流函数和防抖函数的区别和应用
节流函数和防抖函数的区别和应用
46 0
|
前端开发
封装防抖函数和节流函数
封装防抖函数和节流函数
86 0
|
2月前
|
前端开发
防抖和节流的区别,实现和用处。
防抖和节流是优化高频事件处理的两种技术。防抖确保在一系列连续事件后仅执行最后一次操作,如搜索输入完成后再发送请求;节流则保证在设定时间内仅执行一次操作,适用于滚动加载等场景。两者通过限制回调函数的执行频率,有效提升前端性能。示例代码展示了如何实现这两种技术。
41 2
|
3月前
|
前端开发 JavaScript UED
什么是防抖和节流?有什么区别?如何实现?
防抖和节流是前端优化技术,用于限制函数的执行频率。防抖是在一段时间内只执行一次函数,常用于搜索输入、窗口调整等场景;节流是在固定时间间隔内执行函数,适用于滚动事件、鼠标移动等。实现方式通常使用定时器。
|
8月前
|
UED
函数防抖
在频繁触发的情况下,只有足够的空闲时间,才执行代码一次,如果没有执行完就清除掉,重新执行逻辑。简单来说,当触发后再次触发,会取消上一次触发的执行,直到最后一次触发后过去设定时间后才执行。
61 5
|
8月前
|
算法 前端开发
2627. 函数防抖
2627. 函数防抖
55 0
什么是防抖和节流,怎么实现一个防抖和节流?
功能:当事件被触发N秒之后再执行回调,如果在N秒内被触发,则重新计时。
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(一)
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(一)
|
UED
防抖和节流怎么做
防抖和节流都是为了控制代码执行频率,提高性能和用户体验。
47 0