防抖(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);
总结
- 防抖适用于输入内容验证、搜索等场景,延迟一定时间后执行目标函数。
- 节流适用于滚动、窗口大小改变等场景,在规定时间内只执行一次目标函数。
- 它们的实现都是通过控制函数执行的时机来达到优化性能的目的。
热门推荐
如何治疗小腿肚子疼和臀部麻木的症状
18世纪苏格兰水手荒岛生存4年成《鲁滨逊漂流记》原型
6步教你做外焦里糯的大黄米莲藕饼
大黄米:冬季养生的营养担当,3种食谱助你调养身体
特朗普贸易政策引发韩股暴跌,三星股价跌至四年新低
libstdc++ 6:C++开发者的必备神器
成都6个热门夜市,每当夜幕降临,好吃嘴都蜂拥而至
如何在微信中高效管理多个账号,实现间接联动?
广西江西2025年气候预测:冷热交替,你准备好了吗?
春节带娃去哪儿玩?横店南京上海千岛湖任选
每天一勺芝麻酱,心血管更健康
《鲁滨逊漂流记》思维导图笔记:让阅读更直观高效
以长安链为底座,江海链助力南通民政打造慈善应用标杆
跨界融合:人工智能与区块链如何重新定义数据安全?
维京长船:桨帆结合设计开创北大西洋航线,兼具贸易与探险功能
给琥珀排排辈儿,看看谁是年龄最大的琥珀?
郑州大学一附院专家教你早期筛查肺结节
杨宝江主任教你评估肺结节风险
CT扫描揭示右肺结节真相:低剂量高精度,精准诊断保健康
专家:区块链在金融各细分领域应用前景广阔
物联网技术开发如何与区块链结合?(物联网+区块链,打造可信智能系统)
上海国资国企数字化转型提速:首批区块链创新应用场景启动
区块链在安全领域的应用
科学解读青春期身体变化:家长如何正确引导孩子
购买纯银饰品时如何运用法律保障自己的权益
临沂疾控专家详解:学校甲流防控这样做最有效
甲流防护全攻略:从个人卫生到疫苗接种
昂拉地韦缩短症状25%,玛舒拉沙韦24小时退烧:新药治疗甲流效果对比
全球首艘氢动力邮轮诞生,维京引领航运业绿色转型
Nature最新研究:表观遗传变异可独立引发癌症