防抖可以利用插件解决lodashi

防抖是什么:防抖策略(debounce)是当事件被触发后,延迟n秒后再执行回调函数,如果在这n秒事件又被触发则重新计时。类比:英雄回城

javascript中的防抖和节流

防抖的实际应用:输入框防抖

Var timer = null  //1、防止抖动的timer

Function debounceSearch(keywords) { //2、定义防抖函数

timer = setTimerout(function(){ getSuggestList(keywords) },500)//发请求

}

$(‘#ipt’).on(‘keyup’,function(){// 3、 在触发keyup事件的时候,立即清空timer,重新开启执行防抖函数

  clearTimeout(timer)

  debounceSearch(keywords)

} )

 

什么是节流:节流策略(throttle),顾名思义,就是减少一段时间内事件的触发频率。类比:射击游戏,不能说你按住发射键就一直发射子弹,会有一个间隙,在这个间隙之间触发射击键是没有用的

javascript中的防抖和节流

节流的应用场景:1、鼠标连续不断地触发某事件(如点击),只在单位时间内触发一次。2、懒加载的时候要监听计算滚动条的位置,但不必每次滑动都触发,可以降低计算频率,不浪费cpu资源

节流需要借助节流阀实现:节流阀概念=>高铁卫生间 红绿灯控制,红灯有人,绿灯没人。

节流阀为空可以进行下一次的操作,不为空就不能执行下一步的操作。当前的操作完成,必须必须将节流阀重置为空,表示可以执行下一次操作了,每次执行前必须先判断节流阀是否为空。

javascript中的防抖和节流

javascript中的防抖和节流

对延迟函数进行理解:是16毫秒之后开始执行函数体里面的内容,函数体内部其实也有先后顺序。

timer在事件触发到事件16毫秒执行都是真(true)值。 定时器是同步的内部是异步的,定时器只要一开timer就是真值。

扩展:定时器不会自己关闭,需要手动清除

区别:

防抖:事件被频繁触发,防抖可以保证最后一次的触发生效,前面的n多次触发会忽略

节流:事件被频繁触发,节流可以减少事件的触发的频率,有选择的执行一部分事件。

相关文章:

  • 2020-07-27
  • 2022-01-13
  • 2021-09-17
  • 2019-11-12
猜你喜欢
  • 2021-08-16
  • 2019-03-28
  • 2021-07-15
  • 2021-03-26
  • 2021-11-21
  • 2021-10-16
  • 2021-10-31
相关资源
相似解决方案