两者都限制函数响应快速、重复事件的运行频率——但采用不同的计时策略。
- Debounce: 仅在活动停止后 N ms 运行函数。每次调用都重置计时器。→ "等到他们完成。"
- Throttle: 在持续活动期间最多每 N ms 运行一次函数。→ "以稳定速率运行。"
text
events: x x x x x x x ........ x x x
debounce: ↑ (fires once, after the pause)
throttle: ↑ ↑ ↑ ↑ (fires periodically)
Debounce 实现
js
() {
timer;
{
(timer);
timer = ( (...args), ms);
};
}
search = ( api.(q), );
