レート制限の目的で関数をスロットリングすることとデバウンスすることの違いについて、簡単な言葉で説明してくれる人はいますか?
私にとっては、どちらも同じことをしているように見えます。調べるためにこの 2 つのブログをチェックしましたが、まだ理解できません。
http://remysharp.com/2010/07/21/スロットリング関数呼び出し
http://benalman.com/projects/jquery-throttle-debounce-plugin/
ベストアンサー1
簡単に言えば:
- スロットリングにより関数の実行が遅延されます。これにより、複数回発生するイベントの通知が削減されます。
- デバウンスは、関数への一連の連続呼び出しを、その関数への 1 回の呼び出しにまとめます。これにより、複数回発生するイベントに対して 1 つの通知が確実に行われるようになります。
違いは視覚的にわかりますこのデモではマウスの動きに基づいて、デバウンスされたイベントとスロットルされたイベントがいつ発生するかを示します。
頻繁に呼び出される関数がある場合、たとえばサイズ変更やマウス移動イベントが発生したときなどは、その関数が何度も呼び出される可能性があります。この動作が不要な場合は、関数が一定の間隔で呼び出されるようにスロットルすることができます。デバウンスとは、一連のイベントの最後 (または最初) に呼び出されることを意味します。