if(resTime < duration) {
// 清除上次的定时器,取消上次调用的队列任务,重新设置定时器。...重置一个开关变量+定时器
* @params method,duration形参数与上面的含义一致
* @return 返回的是一个事件处理函数
*
* 在throttle2执行时定义了runFlag的初始值,...例如:表单多次提交,推荐使用防抖
换句话说,也就是当连续触发事件时并没有执行事件处理函数,只有在某一阶段连续触发的最后一次才执行,它遵循两个条件
必须要等待一段时间
上一次触发的时间间隔要大于设定值才执行...小结:
共同点: 都是解决频繁操作触发事件处理函数,引起页面卡顿,不流畅等性能问题,都是通过设置延时计时器逻辑来提升性能,以减少http请求次数,节约请求资源
不同点:函数节流,间隔时间内执行事件处理函数...当然对于上面的代码,还是可以优化一下的,对于回调函数,在Es6中,常用于箭头函数来处理,这样会省去不少麻烦
例如:this的指向问题
如下所示:debouce函数最简易的封装
你也可以把上面的定时器初始值放在