节流是保证函数在固定时间间隔内最多执行一次,用于scroll、mousemove等需持续反馈的场景;支持leading(首次立即执行)和trailing(末次补执行)策略,核心是“不扎堆、不断档”的匀速执行。

节流就是给函数“装个计时器开关”,让它在固定时间间隔内最多只跑一次。
像水龙头滴水一样控制节奏
不管你怎么拧紧或松开,水滴只能每隔固定时间落下一滴——节流不看触发多频繁,只保证执行有规律。比如设了 300ms 节流,那无论鼠标移了 10 次还是 100 次,这 300ms 内只响应第一次(或最后一次,取决于实现方式)。
关键不是“省着用”,而是“稳着用”
- 防抖是等你彻底停手才干活,适合搜索框输入、窗口缩放后布局重算
- 节流是哪怕你一直动,也得按节奏来,适合 scroll、mousemove、resize 这类必须持续反馈但又不能太密的场景
- 它不合并操作,也不延迟到“最后”,而是强制把高频调用“摊平”成匀速执行
两种常见执行时机可选
实际用的时候,节流函数通常支持两个配置项:
- leading: true —— 时间窗口一开始立刻执行一次(比如滚动刚动就更新位置)
- trailing: true —— 时间窗口结束时再补一次(确保最后一次变化不被丢掉)
- 两者可以同时开启,也可以只开一个,根据业务需要定
一句话记住本质
节流不是为了“不执行”,而是为了让执行“不扎堆、不断档”。它牺牲一点实时性,换来的是稳定、可预期、不卡顿的运行节奏。











