防抖和节流操作

37 篇文章 0 订阅
2 篇文章 0 订阅

防抖

防抖操作,我的理解就是,第一次触发事件时,不立即执行操作,设置一个n秒的期限,如果n秒内没有再次触发这个事件,就执行函数;如果n秒内再次触发了事件,则将计时器清零重新开始计时,直到计时器达到n秒,才执行函数。
这样就达到了短时间内多次触发同一个事件,只会执行一次函数的效果。
实现:

<button type="primary" @click="clickHandler(2)">提交</button>
export default {
	data(){
		return {
			clickHandler:null,//防抖操作
		}
	},
	created:function(){
		//this.save是需要被触发的事件,注意不能写成this.save();
		this.clickHandler = this.debounce(this.save, 1000)
	},
	methods: {
		//防抖操作函数
		debounce(fn,wait) {				
		    let timer = null;				
		    return function(...args) {   
		        if(timer)   clearTimeout(timer);        
		        timer = setTimeout(()=>{
					fn.apply(this,args)
				},wait);
		    }
		},
		save:function(type) {
			//触发事件
		}
	}
}

节流

节流操作就像一个类似控制的阀门,我们只需要控制在时间间隔后开启关闭。对于短时间内触发事件,节流目的想让触发回调函数的频率降低,在某一时间内回调函数是失效状态。

function throttle(fn, delay) {
     let valid = true//有效的
      return function() {
          if(!valid) {
              return false
          }else {
              //工作完后变为 无效
              valid = false
              //在一定的时间段变为工作状态
              setTimeout(() => {
                  fn();
                  valid = true;
              }, delay)
          }
      }
  }
    ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值