
前端防抖节流主流库实战与避坑指南
概念解析
防抖(debounce)指在事件被触发后,等待一段时间再执行,若期间再次触发则重置计时器。节流(throttle)指限制函数在一定时间内只执行一次,无论触发频率多高。
常见误区包括将防抖函数写在组件 render 中导致重复创建,或在响应式计算中使用节流导致定时器混乱。专业库能处理边界情况,如立即执行模式、取消功能及 Promise 支持。
// 基础防抖实现示例
function myDebounce(fn, delay) {
let timer = null;
return function (...args) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, args);
}, delay);
};
}
主流库对比
Lodash
老牌稳定,文档齐全,TypeScript 支持完美。支持 leading, trailing, maxWait 等丰富配置。缺点是体积较大。
import { debounce, throttle } from 'lodash';
const searchDebounce = debounce((keyword) => {
console.log('搜索:', keyword);
return fetch(`/api/search?q=${keyword}`);
}, 300, { leading: false, trailing: , : });


