马小看前端(防抖节流)
在前端的开发过程中,有一部分用户行为频繁的去触发事件,而对于dom操作来说,有耗费性能的问题,很可能导致卡顿,甚至浏览器的崩溃,防抖和节流就是为了解决这个问题
防抖:
实现的场景:在实时搜索时,拖拽时
下面我们来看看代码的实现
function debunce(hanlder,delay){
var timer = null;
return function{
var self = this,args = arguments
cleartimeout(timer)
timer = setTimeout(function (){
handler.apply(self,args)
},delay)
}
每次去清空定时器时,重新设置上计时器,使得计时器每一次都重新开始,直到满足条件并且等待delay时间后,才开始执行hanlder函数
节流:
实现场景:用来调节窗口大小,页面的滚动,抢购时避免有用户疯狂点击
下面我们来看看代码实现
function throttle(handler,wait){
var lastTime=0;
return function(){
var nowtime = new Date(),getItem();
if(nowTime-lastTime >wait){
handler.apply(this,arraments);
lastTime = nowTime
}
}
}
在大于等于10分钟的时候发一次来,重点是一定时间间隔就会触发一次,就是预定一个函数只有在大于等于的时候才会执行周期