2016-07-25 6 views
1

私はprojectでRxJS 5(beta10)を使用しています。私の出来事のほとんどは、マウスやタッチドラッグに由来しています。最後のものを聞く必要があります。RxJS 5(ベータ版)でマウスイベントを頻繁にスキップする方法は?

つまり、RxJS5で非可逆ストリームを実行するにはどうすればよいですか?

特定のタブレットでデモを実行すると、グラフィックスの更新がブラウザからのイベントの点火よりも時間がかかります(継続的ではなく、ブラウザ自体が最適化するように見えます)実際に物事が変わったことを伝える)。

ロッシーなデータストリームでは、ユーザーエクスペリエンスを常に指で追いかけることができます。


編集:

This answerかなりよくRxJS5背圧の現在の状態を総括しているようです。

+1

注意バックプレッシャはいくつかの問題があるため、RxJS 5では削除されています。 – paulpdaniels

+0

ありがとう@paulpdanielsしかし、私はここで真の背圧を必ずしも探していません。 RxJS4の「制御された」もので十分であり、私は今週末の解決策を見つけるだろうと思う。もちろんここに投稿します。 – akauppi

答えて

0

損失性ストリームの定義が多いため、さまざまな解決策があります。ドラッグポイントを平均化したい場合や、期間内の最初か最後かを見たい場合があります。たとえばthrottleについては

は、あなただけの定期的な期間と期間内の最初の観測値を選択できるようになります。rxjsのgithubのレポに

ドキュメント

によって放出されるだけで最初の項目を放射する観察可能を返します ソース指定した の連続時間ウィンドウ中に観測可能です。あなたが入力が行動を起こす前に、一定時間静か を持つまで待つしたい場合

基本的に、あなたは デバウンスにしたいです。それはあなたにある種の "中間的なストリーム"のような感じを与えます。

特定の時間内に1つ以上の観測値を処理したくない場合は、スロットルが望ましいでしょう。

より洗練された "損失性"アルゴリズムは可能ですが、フレーム更新率を制御するかどうかにかかわらず、正確なユースケースに強く依存します。

+0

ありがとう、ベン。以前のものに起因するレンダリングが終了したときに、最後の値を取得したかっただけです。私の答えで説明されているように、 'auditTime'はこれに近いです。 – akauppi

1

RxJS5 auditTimeメソッドが私の請求書に適合しているようです。

RxJS 4スロットルの問題は、の最初のの値を特定の時間ウィンドウの値にして、私は本当に最後の(中間の値をスキップして、デバイスのレンダリング速度が遅い場合)を望んでいました。 auditおよびauditTimeはこれを正確に示します。

残っているのは実際に効果をテストすることです。イベントハンドラのSVGグラフィックスを変更していますが、実際に画面に表示されるまでにどれくらいの時間がかかるか分かりません。簡単な解決策は、ユーザーが調節可能なパラメータを調整することです。ゆっくりとしたタブレットでは、デスクトップ上よりも少し上回る必要があります。理想的には、ブラウザのレンダリングがいつ終了したかを知る方法を見つけ、新しい座標だけを求めます。

関連する問題