如何实现防抖和节流?

防抖和节流是常见的前端性能优化方案

防抖:在触发频率高的事件中,执行耗费性能的操作,连续操作后只有最后一次生效

//自己实现debounce
function debounce(func,wait=0){
let timeId //为什么不在内部声明id?因为我如果在内部声明,每一次触发事件就会有一个新的变量产生
return function(...args){
const self=this
clearTimeout(timeId)
timeId=setTimeout(()=>{
  func.apply(self,args)
},wait)
	}
}

节流:在触发频率高的事件中,执行耗费性能操作,连续触发,单位时间内只有一次生效

function throttle(func,wait=0){
	let timeId
	return function(...args){
		const self=this
		setTimeout(()=>{
			func.apply(self,args)
		  	timeId=undefind
		},wait)
	}
}
//-----------测试用例
function handleClick(){
	console.log("click me",new Date().toLocaleTimeString())
				}
document.addEventListener('DOMContentLoaded',()=>{
  const button = document.querySelector('#myButton')//html中定义个按钮
  if(button){
	const t=throttle(handleClick,3000)
	button.addEventListener('click',t)
  }
}

全部评论

相关推荐

点赞 评论 收藏
分享
Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务