RxJS-DOMを使用してmousewheel
イベントを監視したいので、最初のイベントが発生したときにそれを転送してから、後続の値の間の遅延が以前に指定された値期間。送信された値が数値であり、時間はどのくらい説明どこRxJSが最初にスロットルして待機する
0 - (200 ms) - 1 - (400ms) - 2 - (600ms) - 3
:次のデータ・ストリームを想像してみて
Rx.DOM.fromEvent(window, 'mousewheel', (e) => e.deltaY)
.timegate(500 /* ms */)
:
私が想像してるオペレータは、次のようになります次の値が到着します。後続の値間の個々の遅延が500ms
より大きくないため、0が最初の値であるため、出力され、3までのすべての値が削除されます。
スロットルとは異なり、最後の受信値が放出されたかどうかにかかわらず、値間の時間遅延が計算されます。最後に放出された値(0)と現在受信された値(2)との間の時間が経過するので、スロットルで0が送信され、200msが経過し、1が評価され、失敗し、400msが経過し、2が評価され、 )は600msですが、私のオペレータでは1と比較して評価され、時間経過は400msとなり、テストに失敗します。
また、この演算子はデバウンスもしません。インターバルが経過するまで待つのではなく、まず最初の値を送信し、その後のすべての値に対して評価します。
このような演算子は既に存在しますか?もしそうでなければ、私はどのようにして一つにするつもりですか?
/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/debounce.md)。 –
いいえ、debounceは時間間隔の後に値を送信します。値を送信してから、最初の値が送信された後の期間を超えないすべての値を削除します。 – barndog
文書から:Observableが他の項目を省略しないで、特定のタイムスパンが過ぎた後、Observableソースから項目を放出します。 - または - 観測可能なシーケンスの値の後に、計算されたデバウンス期間内の別の値が無視されます。 – barndog