防抖
函数防抖是指在事件被触发 n 秒后再执行回调,如果在这 n 秒内事件又被触发,
则重新计时。这可以使用在一些点击请求的事件上,避免因为用户的多次点击向
后端发送多次请求。
通俗理解防抖就是对最后触发的一次进行处理,生活中,比如公交车司机,会确保所有乘客都上车再开车
防抖代码:
if(){ window.cleartimeout(timeid)} // 清除时间,直到最后一个
执行结果:延时器为5秒
执行思路:
return 就是把shuaka 这个函数给了startshuaka 执行第一次
return 函数中 if() timeid为null 不执行 执行下一步
下一步为五秒的延时器占着位置。 这个时候timeid就不是null,延时器结束才是null,
而5秒时间内 若再次执行了startshuka ,这是timeid有值 则 走清除这一步,清除
的是上一步的timeid,这时timeid 则继续被下一个 延时器占着。直到最后一个,
当延时器结束,timeid为null的时候,再次重新执行。
节流
函数节流是指规定一个单位时间,在这个单位时间内,只能有一次触发事件的回
调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。节
流可以使用在 scroll 函数的事件监听上,通过事件节流来降低事件调用的频率。
通俗理解节流就是第一个人进去了,就截住了,只服务一个,和游戏中的CD冷却时间一个道理
节流代码:
r是需要执行的函数
cd是执行
use是执行的过程
cd为true的时候执行,执行的过程cd 为false禁止再执行
cd执行的时间是delay,执行结束后,则可再次执行
执行思路:
执行第一遍r,fn为false, 则这时延时器启动,
三秒后,才会执行第二遍,在延时器时间内,哪怕再调用fn,则执行else
代码:
执行结果:延时器为3秒