记录生活

参数

func 回调
wait 等待时间
immediate 是否立即执行

    function debounce(func, wait, immediate) {
    let timeout, result;
    return function(){
        let context = this;
        let args = arguments;
        if(timeout) clearTimeout(timeout);
        if(immediate){
            let callNow = !timeout;
            timeout = setTimeout(function(){
                timeout = null;
            },wait)
            if(callNow) result = func.apply(context, args)
        }else{    
            timeout = setTimeout(function(){
            func.apply(context,args)
            },wait);    
        }
        return result;
    }