防抖与节流

防抖

  • 就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。

例子:监听浏览器滚动事件

/*
* fn [function] 需要防抖的函数
* delay [number] 毫秒,防抖期限值
*/
<html>
<head>
    <meta charset="utf-8"/>
    <title></title>
	<style>
        div{
		height:1200px
		}
	</style>
</head>
<body>
   <div></div>
	
<script>
function deboumce(fn,dely){
   let timer=null
   return function(){
   if(timer){
		clearTimeout(timer)
   }
	timer=setTimeout(fn,dely)
	
   }
}
function showTop(){
		var scrolltop=document.body.scrollTop||document.documentElement.scrollTop;
		console.log('滚动条位置'+scrolltop)
}
window.onscroll=deboumce(showTop,1000)
 </script>
</body>
</html>

节流

  • 连续触发事件但是在 n 秒中只执行一次函数。

效果:如果一直拖着滚动条进行滚动,那么会以1s的时间间隔,持续输出当前位置和顶部的距离

<html>
<head>
    <meta charset="utf-8"/>
    <title></title>
	
	<style>
        div{
		height:1200px}
	</style>
</head>
<body>
   <div></div>
	
<script>

function showTop(){
		var scrolltop=document.body.scrollTop||document.documentElement.scrollTop;
		console.log('滚动条位置'+scrolltop)
}
  function throttle(fn,delay){
	let valid=true
	return function(){
		if(!valid){
			return false
		}
		valid=false
		setTimeout(()=>{
			fn()
			valid=true;
		},delay)
	}
  }
  
  window.onscroll=throttle(showTop,1000)
 </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值