防抖
在短时间内快速的触发一件事,每次都用新的事件替代上一次,也就是说那么我们只会执行最后一次触发的事件。短时间内快速触达一件事,只会执行最后一次。
function debounce(func, delay) {
let timeoutId;
return function(...args) {
if (timeoutId) {
clearTimeout(timeoutId);
}
timeoutId = setTimeout(() => {
func.apply(this, args);
}, delay);
};
}
// 使用防抖函数
const searchInput = document.getElementById('search');
searchInput.addEventListener('input', debounce(handleSearch, 500));
function handleSearch(event) {
const query = event.target.value;
// 发送搜索请求...
}节流
在短时间内快速触发一件事,当一件事处理函数开始执行的时候,在此期间,不允许重复
function throttle(func, delay) {
let lastExecution = 0;
return function(...args) {
const now = Date.now();
if (now - lastExecution > delay) {
func.apply(this, args);
lastExecution = now;
}
};
}
// 使用节流函数
window.addEventListener('scroll', throttle(handleScroll, 100));
function handleScroll() {
// 更新页面元素的位置或执行其他操作...
}总结来说,防抖主要用来处理那些连续高频触发、但只需要最后一次触发结果的场景,如窗口大小改变、输入框内容变化等。而节流更适合于需要一定频率执行函数,但不想让其过于频繁执行的场景,如滚动事件、动画帧更新等。两者都是为了优化性能和提升用户体验。
本文著作权归作者 [ admin ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。

