どちらも、急速に繰り返されるイベントに応じて関数が実行される頻度を制限しますが、タイミングの戦略が異なります。
- デバウンス(Debounce): アクティビティが N ミリ秒停止した後にのみ関数を実行する。呼び出しのたびにタイマーをリセットする。→「ユーザーが終わるまで待つ」。
- スロットル(Throttle): 連続的なアクティビティの間、N ミリ秒ごとに最大1回だけ関数を実行する。→「一定のペースで実行する」。
text
events: x x x x x x x ........ x x x
debounce: ↑ (fires once, after the pause)
throttle: ↑ ↑ ↑ ↑ (fires periodically)
デバウンスの実装
js
() {
timer;
{
(timer);
timer = ( (...args), ms);
};
}
search = ( api.(q), );
