编辑代码

// 手写防抖

/**
 * @desc 函数防抖
 * @param func 函数
 * @param wait 延迟执行毫秒数
 * @param isNowCarryOut true 表立即执行,false 表非立即执行
 */

function desc(func,wait,isNowCarryOut){
    let isInWait;

    return function(){
        const that = this;
        const args = arguments;
        const isCarryOuted = !isInWait;
        if(isInWait) clearTimeout(isInWait);
        if(isNowCarryOut){
            if(isCarryOuted) func.call(that,args);
            isInWait= setTimeout(function(){
                isInWait= null;
            },wait)
        }else{
            isInWait= setTimeout(function(){
                func.call(that,args)
            },wait)
        }
        
    }
}

// let count = 0

// let interval

// interval= setInterval(function(){
//     desc(function(){
//         console.log(count++)
//     },100)
//     if(count>100)
//         clearInterval(interval)
// },10)