防抖(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);
总结
- 防抖适用于输入内容验证、搜索等场景,延迟一定时间后执行目标函数。
- 节流适用于滚动、窗口大小改变等场景,在规定时间内只执行一次目标函数。
- 它们的实现都是通过控制函数执行的时机来达到优化性能的目的。
热门推荐
林业无人机解决方案,森林防火的科技革命
风流倜傥的十三阿哥胤祥,他真的被圈禁了十年?
什么是LOF型基金?LOF型基金的特点有哪些?
口头合同在法庭上如何举证有效
治疗白癜风的光疗方法
治疗白癜风疾病的西药
口译资格证书的含金量:打开语言世界的黄金钥匙
交通事故没证据对方不承认怎么办
10种常用细胞核染料特点介绍
如何管理操作人员团队
生理期的时间怎么算
等额等息跟等额本息的区别是什么
后天八卦的运用在哪些方面
痛风发作一般要几天才会好
千克与毫升:质量与体积的微妙关系
盘点2024全球十起重大航空事故
古代老百姓如何传递信息?
论文初稿包括哪些内容(合格论文初稿框架结构解析)
黄金交易价趋势图表分析:技术指标与实战指南
自动挡档位怎样进行区分?不同档位的作用是什么?
如何挑选理想的新房地段和配套设施?
十几个清华学霸给我讲题:一场致力于打破信息差的网络尝试
中国桥梁建设领跑世界,文化+旅游假日经济蓬勃发展
专家解读:孩子个子长得矮,究竟是怎么回事?
饮食中碳水化合物的占比要求及健康影响
茯苓白术泽泻汤的功效与作用
尿液也能“变废为宝”!中国团队研究提出新方法
川贝止咳露临床疗效评估
转诊证明丢了怎么办?补办流程及所需材料全攻略
校园运动会受伤理赔案例:学生安全问题引人关注