编辑代码


// 防抖
function debounce(fn,wait,immediate){
    let timer = null
    return function (){
        let args = arguments
        let context = this
        if(immediate && !timer){
            fn.apply(context,args)
        }
        if(timer) clearTimeout(timer)
        timer = setTimeout(()=>{
            fn.apply(context,args)
        },wait)
    }
}


// 节流

function throttle(fn,wait,immediate){
    let timer = null
    let callNow = immediate
    return function () {
        let args = arguments
        let context =  this
        if(immediate){
            fn.apply(context,args)
            callNow = false
        }
        if(!timer){
            timer = setTimeout(()=>{
                fn.apply(context,args)
                timer = null
            },wait)
        } 
    } 
}