防抖和节流在vue中用于控制高频事件执行节奏;搜索框输入用防抖(如lodash.debounce,延迟300–500ms,注意绑定与cancel清理);滚动/缩放用节流(100–200ms,时间戳实现,配对移除监听);按钮提交推荐防抖+状态锁双保险。

防抖和节流在 Vue 中主要用来控制高频事件的执行节奏,避免重复请求、卡顿或资源浪费。关键不是“能不能用”,而是“在哪用、怎么配、怎么收尾”。下面从实际开发中最常遇到的三个角度讲清楚。
搜索框输入用防抖最合适
用户在输入框中连续敲字,如果每次 @input 都调接口,不仅浪费带宽,还可能让后端报警。防抖能等用户停手后再发请求。
- 推荐用
lodash.debounce:直接在methods里包装函数,延迟 300–500ms 执行 - 注意绑定方式:别写成
@input="debounce(search, 300)"(会每次渲染都新建函数),应提前定义好绑定好的方法 - 组件销毁时记得调用
cancel(),否则定时器残留可能引发内存泄漏
滚动/缩放事件适合用节流
比如监听页面滚动位置来触发动态加载,或者监听 window.resize 来重算布局——这类事件每秒可能触发几十次,必须限制频率。

