防抖(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);
总结
- 防抖适用于输入内容验证、搜索等场景,延迟一定时间后执行目标函数。
- 节流适用于滚动、窗口大小改变等场景,在规定时间内只执行一次目标函数。
- 它们的实现都是通过控制函数执行的时机来达到优化性能的目的。
热门推荐
家居用品的价格因素怎样进行综合考虑?如何在预算范围内选择性价比高的产品?
感冒引起脖子疼是怎么回事
中国最好吃的14种地方菜,你可能一半没吃过
国际海运到美国清关需要提交哪些资料(美国国际海运清关注意事项)
怎样利用AI人工智能运用提高跨境物流效率控制成本?
智慧化、惠民化、品质化,珠海公交这样实现“突围”
CISO报告:2024年AI在网络安全运营领域的现状与前景
非兽医专业怎么考兽医
聚碳酸酯文献研究:其在新材料领域的应用与发展趋势如何?
白色血栓、红色血栓、混合血栓和透明血栓的区别与特点
尿液颜色与状态揭秘,教你如何通过尿液自检健康状况!
溢泪症:病因、症状与治疗全解析
儿科眼部清洁护理方法
如何评估企业数字化转型服务商的能力?
在 Visual Studio Code 中克隆和使用 GitHub 存储库
什么是高蛋白食物?分类、益处与食用指南
笔记本内存条怎么拆卸和安装?详细教程
IC50和EC50:定义、计算及应用
Excel计算IC50值的完整指南
如何安全有效地存储和管理聊天记录文件?
红茶饮用指南:这些人不适合饮用红茶
浙大学者研究发现,经常喝红茶,改善肠道健康,维持肠道稳态
冰心作品的魅力何在?揭秘其独特创作手法
冰心儿童文学中的教育思想
如何把源码放到压缩包
如何选购散光眼镜
在耳边传来的声音芯片世界:无线耳机技术的进步与创新
浴衣:日本夏季的传统服装
如何分析橡胶期货与其他品种的关系?这种关系对投资有何指导意义?
灯光氛围:营造浪漫空间的魔法