专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

什么是javascript防抖节流?

ins518 2024-09-18 17:39:56 技术文章 22 ℃ 0 评论

防抖:

防抖又可以称作防止抖动,举个通俗的例子是用户在网站中触发请求后,然而页面中没有给用户任何提示性信息,然后用户又疯狂地重复触发N次请求,这样就要需要加入防抖技术

1)用户点击发送验证码按钮时,由于验证码倒计时应该是从发验证码接口请求成功时开始读秒的,万一网不好,请求时间过长,如果不做限制,那用户再点击的时候会重复请求接口,并且当多个接口请求成功了之后,读秒会产生bug。

2)防抖技术也可以起到页面优化的效果,例如在调整浏览器大小的时候,要js触发某些方法或者修改页面中的元素时,需要根据页面宽高变化来写,因为变化是立即触发的,所以少不了大量的计算,那么就可以利用防抖来控制,如果调整宽高后多少秒内不再调整,再执行操作代码。

3)富文本编辑器的保存操作,也是防抖技术的体现,“输入完文字后30秒内如果内容没发生任何变化再请求保存接口”比“每输入一个字请求保存接口”资源消耗更少更优。

防抖需要在方法函数内添加setTimeout()延时器,而控制执不执行操作代码只需要控制clearTimeout()的时机,简单意思就是说在事件触发时间段内要清除延时器。

节流:

节流指在事件触发过程中,降低其触发的频率。

1)在页面的scroll滚动监听情况下,默认事件是只要页面有1px的滑动就会触发一次,为了降低触发频率,可以使用节流来控制,让它每隔一秒计时记录一次位置信息,当滑动停止时暂停计时,是暂停不是清除。

2)input输入框做搜索功能时,键盘按一下或表单框中有变化时,就会请求一下搜索接口,虽然用户体验好,但是如果对于大数据量的搜索来讲,会很占用服务器资源,所以用节流来控制的方式,让其做1~2秒的定时请求会更好一些,如果嫌用户体验会降低,也可以在搜索步骤加上一个loading加载图,是不是会更完美了呢?

节流主要目的是为了控制触发频率,所以用到的setTimeout()方法在执行时不需要clear清除,只需要在作用域外部定义一个开关来控制定时器的启动和暂停。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表