节流函数
另一种解决方案比 防抖 要宽松些,这时我们不想用户一味的输入,而是给用户一些搜索提示,所以在当中限制每过500ms就查询一次此时的String,这就是节流。
原理:节流函数不管事件触发有多频繁,都会保证在规定时间内一定会执行一次真正的事件处理函数。代码实现有两种,一种是时间戳,另一种是定时器
1、时间戳
1 | function throttle(fn, delay) { |
2、定时器方法
当触发事件的时候,我们设置一个定时器,再触发事件的时候,如果定时器存在,就不执行;直到delay秒后,定时器执行执行函数,清空定时器,这样就可以设置下个定时器。
1 | function throtte(fn, delay) { |
3、综合使用时间戳与定时器,完成一个事件触发时立即执行,触发完毕还能执行一次的节流函数
需要在每个delay时间中一定会执行一次函数,因此在节流函数内部使用开始时间、当前时间与delay来计算remaining,当remaining <= 0时表示该执行函数了,如果还没到时间的话就设定在remaining时间后再触发。当然在remaining这段时间中如果又一次发生事件,那么会取消当前的计时器,并重新计算一个remaining来判断当前状态。
1 | function throttle(fn, delay) { |
作者:燕自浩
链接:https://www.jianshu.com/p/7020c9133247
来源:简书