//使用
import commonFunc from './utils/commonFunc';
Vue.prototype.commonFunc = commonFunc;
this.commonFunc.intervalApi(this, this.getApiData(), 1250, true);
// 公共方法


let timer = null;
export default {

//   定时请求方法
//   vm 组件实例
//   func 需要执行的方法
//   time 多久
//   bool 是否需要清除定时器
    intervalApi: function (vm, func, time, bool,param = []) {
    func( ...param );
    function timeFuc() {
        return function walk() {
           let timer =  setTimeout(function () {
            clearTimeout(timer);
              func( ...param );
                walk(); 
            }, time);
            if(bool){
                // 1.在beforeDestroy()钩子里进行销毁,意味着在这个钩子里要能获取到定时器的实例,也就是说定时器的实例要在vue实例中,占内存
                // 2.创建定时器的代码和清除定时器的代码通常是不在一块的,很容易出现写着写着忘记清除定时器,不易维护

                // 而使用$once("hook:beforeDestroy",()=>{})就可以避免上面的两个问题

                vm.$once('hook:beforeDestroy', () => {            
                    clearTimeout(timer);                                  
                })
            }
        };
    }
    timeFuc()();
    // const timer = setInterval(() => {
    //     func( ...param );
    // }, time);
    
    },
    dataMin:function(value){
        let min = 0;
        if(value.min - 1000>0){
            min = value.min - 1000
        } else if(value.min - 500>0){
            min = value.min - 500
        } else if(value.min - 100>0){
            min = value.min - 100
        } else if(value.min - 10>0){
            min = value.min - 10
        } else if(value.min - 1>0){
            min = value.min - 1
        }
        return min;
    },
    sizeSet:function(width,num){
        let size = (width * ( num / 1120)).toFixed(5);
        return size + 'px';
    },
    //  防抖
    preventShake(fn, delay){
        console.log('111111111111111111111111111');
        if(timer){
            clearTimeout(timer);
        };
        timer = setTimeout(fn, delay);
    },
}

freeman_Tian
12 声望2 粉丝