防抖和节流

笼统的说,防抖和节流,就是防止代码被频繁调用。

节流和防抖的区别,就是第几次有效的问题。

节流,可以想象”开源节流“,比如,你想让麻麻买一个棒棒糖,第一次她给你买,但是短时间内,你想要吃第二次,麻麻就不给你买了,也就是说,第一次同意,第二,三次都不同意。

防抖,想象一下得了帕金森的老头,按屏幕,按了好几次,那么第几次有效呢?最后一次。

 

先说节流:我们浏览器的一个网页,它的UI线程只有一个,同时处理界面渲染和JS运行,但是如果JS运算量太大的话,就会导致线程阻塞,轻微的就是卡顿,严重就是无响应。

节流就是,高频事件在n秒内只执行了一次。

实现思路:节流函数:在一定时间内,......

在一定时间内,它只执行了第一次=>

一定时间:一个定时器  =>

单位时间内,已经有定时器,就不再执行了=> 制造一个“自毁式”定时器,如果在一段时间完成了什么,就自己把自己销毁 =>在下一次调用的时候,首先先不执行这个方法本身,先判断上一次执行的定时器是否被销毁,如果被销毁,就再执行,如果没有被销毁,就不执行

 

防抖实现思路:

防抖是在一定时间后执行,那么我们可以设定一个定时器,比如10ms,就是让函数10ms后执行,在10ms内触发了另外一个方法=>

如果不加干涉,执行了2个函数 =>

 

把上一次放到定时器里的方法通过clearTimeout方法取消掉=>

也就是说,方法1先执行,在10ms内,方法2又被执行,方法1就被取消=>

最终执行的就是方法2

 

posted @ 2022-03-28 09:59  沉梦昂志_doc  阅读(32)  评论(0编辑  收藏  举报