debounce.js

/**
 *@description 防抖
 * @param {function} callback 回调函数
 * @param {Number} time 延迟时间
 * @returns {function(*=): void} 返回函数
 * @example
 * window.addEventListener('keyup',debounce(function(e){console.log(e);},500))
 */

function debounce(callback, time){
    //定时器变量
    let timeId = null;
    //返回一个函数
    return function(e){
        //判断
        if(timeId !== null){
            //清空定时器
            clearTimeout(timeId);
        }
        //启动定时器
        timeId = setTimeout(() => {
            //执行回调
            callback.call(this, e);
            //重置定时器变量
            timeId = null;
        }, time);
    }
}
export default debounce