Js中的防抖与节流函数
1.何为防抖与节流函数呢?
1.防抖(debounce):通过setTimeout方式,在一定的时间间隔内,将多次触发的事件转化为一次触发。也就是说当一个用户一直触发这个函数,且每次触发函数的间隔小于既定时间,那么防抖的情况下只会执行一次
举例:当用户在进行表单提交时,用户提交一次就向服务器发送一次请求,当用户频繁地点击提交,则很自然地就向服务器多次请求,则会对服务器压力很大,那我们就需要想办法解决这种问题
2.节流(throuttle):当持续触发事件时,保证在一定时间内只调用一次事件处理函数,意思就是说,假设一个用户一直触发这个函数,且每次触发小于既定值,函数节流会每隔这个时间调用一次
举例:当我们打游戏的时候长按某个按键,动作是有规律的在间隔时间触发一次
#1.先来看一个没有经过任何处理的demo
由上图可以知道当我们每点击一次控制台就输出一次,这实际上在现实项目中是很浪费资源的
2.来看一下经过防抖函数包装之后的代码
Document
效果图如下:
3.来看一下经过节流函数包装之后的代码
代码如下:
Document
效果图如下:
4.总结:1.防抖和节流都是为了解决频繁触发某个事件的情况造成的性能消耗
2.防抖是将多次执行变为最后一次执行,节流是将多次执行变为每隔一段时间执行
参考连接:https://www.bilibili.com/video/BV1Vy4y1y7tj?p=3&share_source=copy_web