防抖(debounce)和节流(throttle)的优化方法
创作时间:
作者:
@小白创作中心
防抖(debounce)和节流(throttle)的优化方法
引用
CSDN
1.
https://blog.csdn.net/qq_37268201/article/details/139456606
防抖(debounce)和节流(throttle)是两种常用的优化方法,用于减少高频事件(如滚动、输入、鼠标移动等)触发的函数执行次数,从而提高页面性能。
防抖(debounce)
防抖的原理是在一定时间内,无论触发多少次事件,都只执行一次目标函数。当事件停止触发后,等待一定时间后再执行目标函数。这种方式适用于输入内容验证、搜索等场景,可以有效避免因频繁触发而导致的性能问题。
特点:
- 减少了函数执行次数
- 延迟一定时间后执行
- 适用于输入内容验证、搜索等场景
代码实现:
function debounce(func, wait) {
let timeout;
return function() {
const context = this;
const args = arguments;
const later = function() {
timeout = null;
func.apply(context, args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
// 使用示例
const inputChange = debounce(function() {
console.log('input changed');
}, 300);
document.getElementById('input').addEventListener('input', inputChange);
节流(throttle)
节流的原理是在一定时间内,只允许目标函数执行一次。当事件触发时,如果距离上次执行的时间超过设定的阈值,则执行目标函数。这种方式适用于滚动、窗口大小改变等场景,可以有效降低函数执行频率,提高性能。
特点:
- 减少了函数执行次数
- 在规定时间内只执行一次
- 适用于滚动、窗口大小改变等场景
代码实现:
function throttle(func, wait) {
let lastTime = 0;
return function() {
const now = Date.now();
if (now - lastTime > wait) {
lastTime = now;
func.apply(this, arguments);
}
};
}
// 使用示例
const scrollHandler = throttle(function() {
console.log('window scrolled');
}, 300);
window.addEventListener('scroll', scrollHandler);
总结
- 防抖适用于输入内容验证、搜索等场景,延迟一定时间后执行目标函数。
- 节流适用于滚动、窗口大小改变等场景,在规定时间内只执行一次目标函数。
- 它们的实现都是通过控制函数执行的时机来达到优化性能的目的。
热门推荐
女生如何逃离原生家庭
河北科技大学选科要求对照表:各专业需要选考什么科目
河北科技大学简介
陈哲远也救不了《白色橄榄树》,女主漂亮,但观众的弃剧理由一致
绿洲乐队解散15年后重组,英伦摇滚为何风靡中国
可以替代布洛芬止痛的药
洗涤说明图标大全:洗衣机标志与衣物洗涤标签完全解读
大气科学专业课程学什么(毕业后做什么工作)
嘴唇发紫的人需要补充什么
高原水的沸点是多少
IBM公布量子计算五大应用方向,最后那个你一定想不到!
做事手脚慢怎样变快
如何看待小区的居住环境?小区居住的舒适度如何提升?
肋软骨炎能好吗?吃什么药?
赛道驾驶的高阶技巧,轻点刹车控制推头/甩尾
蓝莓怎么洗才干净
2025舞剧《英歌》深圳演出信息:时间、地点、票价及剧情介绍
ETF与ETF联接基金的费用和策略区别完全解析
红薯减肥餐食谱(减脂晚餐食谱大全)
动力电池回收再利用:从梯次利用到再生利用的全面解析
强化监管,力促废旧电池规范回收
论准民事法律行为的概念、特征与适用范围
论准民事法律行为的概念、特征与适用范围
“马踏飞燕”是什么?“马踏飞燕”有什么来历和含义?
哈尔滨房地产市场:刚需新盘的未来何去何从?
原神V4.2攻略:芙宁娜角色测评与使用指南
2025妆容趋势来了!6大韩妆重点笔记,微光透亮、低饱和色系大势
河南鹿邑 这个小城有把“刷子”
圆柱的侧面积公式及计算方法详解
白细胞过多会造成什么症状