vue中的优化(防抖与节流)

// 防抖(在指定时间内操作:会重新计时)
export function _debounce(fn, delay) {//延迟执行
 
    var delay = delay || 200;
    var timer;
    return function () {
        var th = this;
        var args = arguments;
        if (timer) {
            clearTimeout(timer);
        }
        timer = setTimeout(function () {
            timer = null;
            fn.apply(th, args);
        }, delay);
    };
}

export function _debounceNow(fn, delay) {//立即执行
 
    var delay = delay || 200;
    var timer;
    return function () {
        var th = this;
        var args = arguments;
        if (timer) {//清空任务
            clearTimeout(timer);
        }
       let clallNow=!timer;
       if(clallNow){
     	  fn.apply(th, args);//立即触发
       }
        timer = setTimeout(function () {//新增 定时器(在指定时间内再次操作是会重新触发)
            timer = null;
        }, delay);
    };
}
// 节流(无论怎样操作:在指定时间后触发一次)
export function _throttle(fn, interval) {//时间戳 (移动端推荐)
    var last;
    var timer;
    var interval = interval || 200;
    return function () {
        var th = this;
        var args = arguments;
        var now = +new Date();
        if (last && now - last < interval) {
            clearTimeout(timer);
            timer = setTimeout(function () {
                last = now;
                fn.apply(th, args);
            }, interval);
        } else {
            last = now;
            fn.apply(th, args);
        }
    }
}


export function _throttleTime(fn, interval) {//定时器
    var timer;
    var interval = interval || 200;
    return function () {
        var th = this;
        var args = arguments;
        if (!timer) {
        	timer=setTimeout(function(){
        		timer=null;
        		fn.apply(th,args)
        	},interval)
         }  
    }
}
import { _debounce } from "@/utils/public";
methods: {
  // 触发的事件
  changefield: _debounce(function(data) { //立即执行当前的匿名函数
    // do something ...
    //data   template 中触发函数是传入的值 
   //你所需要的效果函数
   //比如: 搜索 在一定时间内点击,及点击按钮一直点击 就会出发的情况
   this.getList()
  }, 200)  getList(){
  //do something ...
  }
  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值