防抖函数通过定时器延迟执行回调,频繁触发时重置计时,确保事件停止后指定时间再执行。支持立即执行模式,适用于搜索输入、窗口缩放等场景,有效减少函数调用次数,核心是利用setTimeout和clearTimeout控制执行时机。

防抖函数(Debounce)是一种优化高频触发事件的手段,常用于窗口滚动、输入框搜索等场景。它的核心思想是:在事件被触发一段时间后才执行回调,如果在这段时间内事件再次被触发,则重新计时。
利用 setTimeout 延迟执行函数,并在每次触发时清除之前的定时器。只有当事件停止触发超过指定时间后,目标函数才会真正执行。
一个基础的防抖函数实现如下:
function debounce(func, wait) {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func.apply(this, args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}说明:
立即学习“Java免费学习笔记(深入)”;
有时希望第一次触发立刻执行,之后的触发才进入防抖流程。可以加一个 immediate 参数来控制。
function debounce(func, wait, immediate) {
let timeout;
return function executedFunction(...args) {
const context = this;
const later = () => {
timeout = null;
if (!immediate) func.apply(context, args);
};
const callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}适用场景举例:
这样,只有当用户停止输入 300ms 后才会触发搜索,有效减少请求次数。
基本上就这些。防抖不复杂但容易忽略细节,关键是理解定时器的清除与重设逻辑。根据业务需求选择是否立即执行,就能应对大多数场景了。
以上就是javascript_如何实现防抖函数的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号