防抖和节流解决方案

防抖的概念

在一个事件触发之后,设置定时器,定时器给的时间是n,若是在n秒之内该事件再次发生,则定时器会被清零,重新开始计时,否则执行该事件的函数.(提高性能)下面直接上代码.

防抖之非立即执行函数(普通函数)
	// fun 需要防抖的函数
	// time 时间
	function antiShake(fun, time) {
			let timer = null;
			return function() {
			    clearTimeout(timer);
			    timer = setTimeout(function() {
				fun.apply(this,arguments);
	   }, time);
	 }
	}
防抖之立即执行函数
//fun 需要防抖的立即执行函数
// time 时间
function antiShake(fun, time) {
	let timer = null;
	let flag = true;
	return function() {
		clearTimeout(timer);
		if(flag) {
			fun.apply(this,arguments);
			flag = flase;
				}
		timer = setTimeout(function() {
			flag = true;
		}, time);
	}
}

节流的概念

一个事件在n秒内被多次触发,但绑定的函数在期间只会执行一次(提高性能)

节流之非立即执行函数
	// fun 需要节流的函数
	// time 时间 
	function throttle (fun, time) {
		let flag = true;
		return function() {
			if (flag) {
			flag = false;
			setTimeout(function() {
				fun.apply(this, arguments);
				flag = true;
				}, time);
			}
		}
	}
节流之立即执行函数
	// fun 函数
	// time 时间
	function throttle (fun, time) {
		let flag = true;
		return function() {
		if (flag) {
			flag = false;
			fun.apply(this, arguments);
			setTimeout(function() {
			flag = true;
			}, time);
			}
		}	
	}

防抖动和节流抖是为了提高性能!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值