2017-11-19 8 views
2

どのようにして画像のような観測を作成できますか? Click to see the picture クリックイベント1と3と4を取得し、1、2、3が非常に近いので、2を取り除きたい(<の間に200ミリ秒)。 クリックイベントがある場合1,2,3,4,5,6 ................ 7,8,9 .......... 10 、私はわずか1,6,7,9,10を取得したい。 1,2,3,4,5,6はお互いに非常に接近しているので(私は< 200msと言う)、私は最初と最後を取得したいだけです。 私の悪い英語のため申し訳ありません、説明するのはかなり難しいです:)rxjava観測を作成する

+0

あなたが望むものだけを収集するために、 'sampleFirst()'演算子を使用しようとしたことがありますか?それはうまくいったのですか? –

答えて

0

私はbuffer演算子が必要なものだと思います。例えば

Observable.from(events).buffer(1, TimeUnit.SECONDS). 
     subscribe(objects -> System.out.println(String.format("got {} items", objects.size()))); 
0

使用デバウンスオペレータは、時間に基づいて、特定のイベントをスキップします。これはDebounceオペレータのドキュメントです。

この演算子では、値を受け取るたびに時間ウィンドウが開始されます。ウィンドウが期限切れになると、その値が放出されます。ただし、ウィンドウが期限切れになる前に別の値を受け取った場合、前の値は拒否され、次の値のためにウィンドウが再開されます。

以下の簡単な例を見てみましょう。

Observable.range(0, 10) 
      .debounce(100, TimeUnit.MILLISECONDS); 

ここでは、整数値0~10が出力されます。 0から1秒後に20ミリ秒、1から120ミリ秒後に1を発したとしましょう。

したがって、0と1が時間枠内で発生したため、デバウンス演算子は1と2だけを出力します。一方、1と2は100ミリ秒離れていた。

enter image description here

Documentation

関連する問題