Debounce 是一种常用的前端技术,用于限制某个函数在特定时间内的执行次数。当一个事件被触发后,Debounce 函数会等待一段时间,如果在这段时间内没有再次触发该事件,则执行该函数;如果在等待期间再次触发该事件,则重新开始计时。
原因:通常是因为在Debounce函数的等待时间内,事件被多次触发,导致多个定时器同时存在,当等待时间结束后,这些定时器都会执行对应的函数。
解决方案:
function debounce(func, wait) {
let timeout;
return function(...args) {
const context = this;
clearTimeout(timeout);
timeout = setTimeout(() => {
func.apply(context, args);
}, wait);
};
}
示例代码:
// 示例函数
function handleInput() {
console.log('Input handled');
}
// 创建Debounce函数
const debouncedHandleInput = debounce(handleInput, 300);
// 模拟事件触发
document.getElementById('inputField').addEventListener('input', debouncedHandleInput);
参考链接:
Debounce 函数通过限制函数的执行频率,有效减少了不必要的计算和资源消耗,提升了应用的性能和用户体验。在实现时,需要注意清除之前的定时器,以避免超时完成后多次运行的问题。
Tencent Serverless Hours 第13期
云+社区技术沙龙[第14期]
高校公开课
Techo Day
玩转 WordPress 视频征稿活动——大咖分享第1期
T-Day
云+社区技术沙龙 [第31期]
领取专属 10元无门槛券
手把手带您无忧上云