防抖与节流

52 阅读1分钟

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。

function debounce(fun,time){  
    let timer  
    return function(){ 
        clearTimeout(timer)   
        let args = arguments    
        timer=setTimeout(()=>{
        fun.apply(this,args)  
        },time) 
    } 
}

规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。

function throttle(fun,time){
    let t1=0 //初始时间 return function(){ 
        let t2=new Date() //当前时间 
        if(t2-t1>time){   
        fun.apply(this,arguments)    
        t1=t2  
        } 
    } 
}