12

LoDash のデバウンスはオプションを受け入れますmaxWait

ドキュメントから:

[options.maxWait]func(数値):呼び出される前に遅延できる最大時間。

私は混乱しています、それはスロットルを使用するのと同じではありませんか? 違いは何ですか?

4

2 に答える 2

12

これらは似たような概念ですが、まったく異なります。

maxWait- 関数が呼び出されるまでの待機時間。

throttle-呼び出し間の待機時間。

throttle関数を複数回呼び出していて、あまり頻繁に呼び出されたくない場合に使用されます。 maxWait単一のイベントの実行を遅らせる場合に使用されます。

ここにもう少し詳細を追加して編集します。

_throttle と _debounce の違いは微妙です。

_debounce は、次の関数を作成します。

前回呼び出されてから wait ミリ秒が経過するまで func の実行を遅らせる関数を作成します。

一方、_throttle は次の関数を作成します。

実行時に func 関数を待機ミリ秒ごとに最大 1 回だけ呼び出す関数を作成します。

_debounce は実際には後続の呼び出しの発生を許可しますが、処理を遅らせますが、_throttle は実際には待機期間中の呼び出しを許可しません。

関数を複数回デバウンスして、理論的に無期限に遅延させることができます。maxWait関数が最終的に呼び出されるようにするために使用できます。

leadingおよびオプションによって、関数がさらに実行されることはtrailingありません。代わりに、関数がいつ実行されるかを制御します。

を使用するleadingと、関数が実行され、後続の呼び出しがデバウンスされます。

を使用trailingすると、デバウンスの最後に関数が実行されますが、これはタイムアウトよりも短い場合があります。基本的に、途中で開始された場合にタイムアウト全体を待機させるのではなく、最後のデバウンス時間が終了するとすぐに後続の呼び出しが発生するようにします。

注: 先行オプションと後続オプションが true の場合、デバウンスされた関数が待機タイムアウト中に複数回呼び出された場合にのみ、func がタイムアウトの後縁で呼び出されます。

したがって、理論的には、3 つのオプション ( leadingmaxWait、およびtrailing) をすべて使用しmaxWaitた場合、待機期間を超えることはなくtrailing、同じ待機期間内に関数を 2 回呼び出した場合にのみ発生するため、これは発生しません。

于 2014-06-06T10:39:42.840 に答える