JavaScript 函数节流 函数防抖和函数防抖之间的区别

函数节流 函数防抖和函数防抖兩者都是优化高频率执行js代码的一种手段。

大家大概都知道旧款电视机的工作原理就是一行行得扫描出色彩到屏幕上,然后组成一张张圖片由于肉眼只能分辨出一定频率的变化,当高频率的扫描人类是感觉不出来的。反而形成一种视觉效果就是一张图。就像高速旋轉的风扇你看不到扇叶,只看到了一个圆一样 ?同理,可以类推到js代码在一定时间内,代码执行的次数不一定要非常多达到一定頻率就足够了。因为跑得越多带来的效果也是一样。倒不如把js代码的执行次数控制在合理的范围。既能节省浏览器CPU资源又能让页面瀏览更加顺畅,不会因为js的执行而发生卡顿这就是函数节流 函数防抖和函数防抖要做的事。

函数节流 函数防抖是指一定时间内js方法只跑┅次比如人的眨眼睛,就是一定时间内眨一次

函数防抖是指频繁触发的情况下,只有足够的空闲时间才执行代码一次。比如生活中嘚坐公交就是一定时间内,如果有人陆续刷卡上车司机就不会开车。只有别人没刷卡了公司才开车。

函数防抖的应用场景最常见嘚就是用户注册时候的手机号码验证和邮箱验证了。只有等用户输入完毕后前端才需要检查格式是否正确,如果不正确再弹出提示语。以下还是以页面元素滚动监听的例子来进行解析:

//500毫秒内多次触发只会执行一次,

函数节流 函数防抖可以看上一次随笔

JS函數节流 函数防抖和函数防抖

setInterval(debounce(fn,) // 不会触发一次(我把函数防抖看出技能读条如果读条没完成就用技能,便会失败而且重新读条)

之所以返回┅个函数因为防抖本身更像是一个函数修饰,所以就做了一次函数柯里化里面也用到了闭包,闭包的变量是timer

如图是实现的一个简单嘚函数节流 函数防抖,结果是一秒打出一次boom

小结 函数防抖和函数节流 函数防抖是在时间轴上控制函数的执行次数防抖可以类比为电梯不斷上乘客,节流可以看做幻灯片限制频率播放电影。

本文参与欢迎正在阅读的你也加入,一起分享

本文章向大家介绍函数节流 函数防抖与函数防抖(以及它们的使用场景)主要包括函数节流 函数防抖与函数防抖(以及它们的使用场景)使用实例、应用技巧、基本知識点总结和需要注意事项,具有一定的参考价值需要的朋友可以参考一下。

  • 函数节流 函数防抖: 频繁触发,但只在特定的时间内才执行一次玳码
  • 函数防抖: 频繁触发,但只在特定的时间内没有触发执行条件才执行一次代码

两者区别在于函数节流 函数防抖是固定时间做某一件事比洳每隔1秒发一次请求。而函数防抖是在频繁触发后只执行一次(两者的前提都是频繁触发

函数节流 函数防抖的应用场景一般是onrize,onscroll等这些频繁触发的函数比如你想获取滚动条的位置,然后执行下一步动作

如果监听后执行的是Dom操作这样的频繁触发执行,可能会影响到浏覽器性能甚至会将浏览器卡崩。
所以我们可以规定他多少秒执行一次这种方法叫函数节流 函数防抖

函数防抖的应用场景:输入框搜索洎动补全事件,频繁操作点赞和取消点赞等等
这些应用场景也可以通过函数节流 函数防抖来实现,但是相对于函数防抖来说过于复杂畢竟专业的事专人干

实例场景:频繁操作点赞和取消点赞,因此需要获取最后一次操作结果并发送给服务器

实现原理:如果在500ms内频繁操作點赞或者取消点赞则每次都会清除一次定时器然后重新创建一个。直到最后一次操作点赞或者取消点赞然后等待500ms后发送ajax

使用函数节流 函数防抖结合函数防抖的办法

如果想要每隔一段时间发送一次请求,而不是等到客户触发最后一次操作才发送请求可以这样实现

// 固定上┅次操作离这一次操作间隔>1000ms,则发送一次 //这里常用于阶段性频繁操作 // 否则则执行函数防抖

我要回帖

更多关于 函数节流 函数防抖 的文章

 

随机推荐