所谓的防抖
就是指连续触发事件但是在设定的一段时间内中只执行最后一次
。例如
:设定1000毫秒执行,当你触发事件了,他会1000毫秒后执行,但是在还剩500毫秒的时候你又触发了事件,那就会重新开始1000毫秒之后再执行。
1. 搜索框搜索输入
在我们在所搜框输入时,不能每次输入都触发一次请求,这样会非常的消耗系统性能,那么这时就可以用到防抖。
2.文本编辑器实时保存
在文本编辑器实时保存的应用场景下,不需要用户每次输入都进行一次保存,而是可以设置一个时间,多长时间后再去进行一个自动保存。
如果面试官问我们防抖的代码实现思路,那么我们可以回答利用定时器
。
如下例子:
let timerId = null;
document.queryselector('.ipt').onkeyup= function (){if (timerId !=null){clearTimeout(timerId)
}
timerId = setTimeout(()=
console.1og('我是防抖')
},1000)
}
在我们的实际开发中除了可以自己进行手写还可以使用lodash
进行实现,相关技术各位读者朋友可以自行查阅相关文章。
就是指连续触发事件但是在设定的一段时间内中只执行一次函数。例如
:设定1000毫秒执行,那你在1000毫秒触发在多次,也只在1000毫秒后执行一次。
节流的引用场景比较多常见的有:
1.高频事件例如快速点击、鼠标滑动、resize事件、scroll事件
对于这类高频的事件,我们可以设置一个时间,在设定事件内不管触发多少次事件都不会触发相应的业务逻辑代码,只有这段时间结束后再进行下一轮执行
2. 下拉加载 视屏播放记录时间
对于这一类,我们也可以设置一个时间,设定多少秒记录一次,这样就不会过多的损耗我们系统的性能。
如果面试官问我们防抖的代码实现思路,那么我们可以回答利用定时器
。
如下例子:
let timerId = null;
document.queryselector('.ipt').onmouseover= function (){if (timerId !=null){return
}
timerId setTimeout(()=>{console.log('我是节流)
timerId = null
},100)
}
在开发中对于节流除了我们手写也可以使用lodash
进行实现,相关技术各位读者朋友可以自行查阅相关文章。
单位时间内,频繁触发事件,只执行最后一次
。
单位时间内,频繁触发事件,只执行一次
。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款