JS中的节流和防抖

本文介绍了前端开发中常用的防抖和节流两种技术,通过实例展示了如何在搜索框输入和文本编辑实时保存场景中实现这两种效果。防抖确保在一段时间内仅执行最后一次操作,而节流则保证在设定时间内只执行一次函数,有效管理高频事件和滚动加载等场景。

1.防抖

  • 概念:就是指连续触发事件但是在设定的一段时间内中只执行最后一次。例如: 设定1000毫秒执行,当你触发事件了,他会1000毫秒后执行但是在还剩500毫秒的时候你又触发了事件,那就会重新开始1000毫秒之后再执行
  • 核心:重新开始
  • 应用场景:1.搜索框搜索输入 2.文本编辑器实时保存
  • 代码实现思路:
let timerId = null;
document.querySelector('.ipt').onkeyup = function(){
	//防抖
	if(timerId !== null){
		clearTimeout(timerId)
	}
	timerId = setTimeout(() => {
		console.log("防抖函数")
	},1000)
}

2.节流

  • 概念:就是指连续触发事件但是在设定的一段时间内中只执行一次函数例如: 设定1000毫秒执行,那你在1000毫秒触发在多次,也只在1000毫秒后执行一次
  • 核心:不要打断
  • 应用场景:1.高频事件(快速点击 鼠标滑动) 2.下拉加载 3.视频播放记录时间
  • 代码实现思路:
let timerId = null;
document.querySelector('.ipt').onmouseover= function(){
	//节流
	if(timerId !== null){
		return
	}
	timerId = setTimeout(() => {
		console.log("节流函数")
		timerId = null;
	},100)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呈两面包夹芝士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值