发表于: 2019-12-03 23:36:44

1 1057


今日完成的事

      调试banner接口,登录接口

明日计划的事

      继续调试接口

收获

      防抖函数

概念:

在事件被触发 n 秒后再执行回调,如果在这 n 秒内又被触发,则重新计时。

生活中的例子:

如果有人进电梯(触发事件),那电梯将在 10 秒钟后出发(执行事件),这时如果又有人进电梯了(在 10 秒内再次触发该事件),我们又得等 10 秒再出发(重新计时)。

可以这样理解

函数触发停止一段时间后(期间不能再触发 debounce,否则将重新计时),再执行回调函数


机制:

防抖函数主要利用定时器的延迟执行特性,根据是否有定时器在等待执行:

触发了一个事件后:如果有一个定时任务待执行,就清除定时器,重新计时。

如果没有任务待执行,就定时执行这个事件。

#应用场景:

表单的连续点击,防止重复提交。比如重复发送一篇文章。

类百度的搜索,连续输入等输入停止后再搜索。

一直拖动浏览器窗口,只想触发一次事件等。


节流函数

概念:

规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行(单位时间内有事件被多次触发则,只生效一次)。

生活中的例子:

漏水的自来水水龙头,尽管水龙头里面有很多水(一直在触发事件),但还是一滴一滴的往下滴(单位事件内只生效一次)。

机制:

节流函数根据时间差是否超过给定时间(gapTime)来决定是否触发回调。

应用场景:

自动保存草稿功能,当用户在输入的时候(一直触发事件),单位时间内只保存一次草稿。

游戏中的刷新率


作用和本质:

防抖函数和节流函数主要解决的问题是:防止函数”短时间“的重复执行。

它们本质上是:在时间轴上控制函数的执行次数。

应用实例,需要加个括号:

因为返回debounce和throttle返回的是一个函数,所以如果不是自动执行的事件监听回调,我们应该再后面加个(),执行返回的闭包函数。



返回列表 返回列表
评论

    分享到