防抖的基本实现:
function debounce(fn, dalay){
//定义一个定时器,保存上一次的定时器
let timer = null
const _debounce = function(){
//取消上一次的定时器
if(timer)clearTimeout(timer)
//延迟执行
timer = setTimeout(() => {
//传入外部真正要执行的函数
fn()
}, dalay);
}
return _debounce
}
———
节流的基本实现:
function throttle(fn, interval){
//记录上一次开始的时间
let lastTime = 0
const _throttle = function(){
//获取当前事件触发的时间
const nowTime = new Date().getTime()
//计算保留时间,间隔时间 - (当前触发的时间 - 上一次开始的时间)
const remainTime = interval - (nowTime - lastTime)
if(remainTime <= 0){
//当保留时间 <= 0 的时候,重新执行
fn()
//将当前事件触发的时间设置为上一次触发的时间
lastTime = nowTime
}
}
return _throttle
}
本文详细介绍了JavaScript中两种重要的性能优化技术——防抖(debounce)和节流(throttle)的实现原理。防抖函数用于限制函数的执行频率,确保在一定时间内只执行一次;节流函数则是在一定间隔内执行一次,避免频繁调用。通过示例代码,展示了如何创建防抖和节流函数,帮助开发者理解并应用到实际项目中,提升用户体验。
2512

被折叠的 条评论
为什么被折叠?



