最近看了一个前端防抖与节流的文章,通俗易懂。
一下是我的理解:
防抖:触发最后一次回城效果,在指定时间内再次触发则重新计算时间。英雄联盟回程效果,回城被打断则重新在等待6秒回城效果。多用于搜索输入事件。
回城 setTimeout()方法
打断回城:clearTimeout()方法
1创建闭包 。
2外部函数携带两个参数
3外层函数 创建一个标记用来存放定时器的返回值。
4 return 内层函数。
5 内层函数 写清除 上次事件及时间。
6内层函数又创建新的setTimeout()放入事件。
节流:触发第一次平A效果,在指定时间内只可以触发一次效果,英雄联盟平A效果,规定一秒中看几刀,哪怕鼠标点击再多此,也只触发规定时间规定几次平A。多用于提交按钮事件。
防抖与节流 回调函数 传参 事件和规定时间
1创建闭包
2外部函数携带两个参数。
3外层函数 创建一个为false的变量。
4 return 内层函数。
5内层函数 判断上次外层函数变量是否为true。
6如为true说明上次事件还未结束直接return。
7如果为false 则进入else判断语句 设置外层变量为true。
8将参数函数传入 setTimeout(),切 函数this指向为 apply(this,arguments),外层变量设为false。