防抖,节流

js中防抖和节流区别

使用原因:
为防止用户频繁操作,导致页面卡顿,浏览器崩溃等情况,防抖和节流就是解决这种情况。

于一切眼中看见无所有,于无所希望中得救。

1.防抖
防抖可以看做是公交车司机等车站最后一个人上车后才出发
运用场景:
实时搜索(keyup),拖拽 (mousemove)
最主要要把时间清除
(本来想把代码贴出来的,就这样凑活一下吧。把笔记写在oneNode里了,发现从里面拷贝出来的全是图片
在这里插入图片描述

2.节流
节流可以看做火车在站台等待一定时间,时间到了就出发
运用场景:
窗口调整(resize),页面滚动(scroll),抢购疯狂点击(mousedown)
最主要给时间赋值null,timer = null;
在这里插入图片描述
代码(可测试):

<!DOCTYPE html>
<html>
<head>
	<title>防抖、节流</title>
</head>
<body>

<button class="throttle">节流</button>
<button class="debounce">防抖</button>
</body>
<script>
	function throttle(fn,wait){
		let timer = null;
		return function(){
			let _this = this;
			let args = arguments;
			if(!timer){
				timer = setTimeout(function(){
					fn.apply(_this,args);
					timer = null;  //给时间赋值
				},wait)
			}
		}
	}

	function debounce(fn,wait){
		let timer = null;
		return function(){
			let _this = this;
			let args = arguments;
			clearTimeout(timer);  //清除时间
			timer = setTimeout(function(){
				fn.apply(_this,args);
			},wait)
		}
	}

	function testThrottle(){
		console.log("等待时间内,无论点击多少次都不触发,只有等待时间到了,才触发")
	}
	function testDebounce(){
		console.log("无论点击多少次,最后一次点击才算,在等待时间后触发")
	}

document.getElementsByClassName("throttle")[0].addEventListener('click',throttle(testThrottle,3000));
document.getElementsByClassName("debounce")[0].addEventListener('click',debounce(testDebounce,3000));
</script>
</html>

如果有不对的,欢迎指出!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值