問題タブ [rx-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
8228 参照

java - 通常の Java イベントから Observable を作成する

Observable従来のJavaイベントパターンからRx-Javaを作成する最良の方法は何ですか? つまり、

実装したい

私が思いついた実装は次のとおりです。

しかし、私はそれがあまり好きではありません:

  1. 非常に冗長です。

  2. ごとにリスナーObserverが必要です (理想的には、オブザーバーがない場合はリスナーがなく、それ以外の場合は 1 つのリスナーが必要です)。これは、オブザーバー カウントを のフィールドとして保持し、OnSubscribeFunc購読時に増分し、購読解除時に減分することで改善できます。

より良い解決策はありますか?

要件:

  1. イベント パターンの既存の実装を変更せずに操作する (そのコードを制御している場合は、Observable必要な戻り値を既に記述できます)。

  2. ソース API が変更された場合にコンパイラ エラーが発生する。Object実際のイベント引数の型の代わりに、またはプロパティ名の文字列を使用しないでください。

0 投票する
2 に答える
3469 参照

java - カスタム クラスを Observable として使用し、時間間隔でメソッドを起動する方法

私はクラスを持っていますProducer。単純化すると、このクラスを(RxJavapublic Object readData() ) として作成したいメソッドがあります。Observable

どのメソッドを呼び出す必要があるかを示す方法は? ProducerクラスをFutureorに変換する必要がありIterableますか?

次の問題は、 をn 秒ごとreadDataに呼び出す必要があることです。fromなどの一部のメソッドにはスケジューラーパラメーターがありますが、それを適用する方法の例が見つかりません。intervalメソッドを見つけましたが、整数のシーケンスを出力します。これまでのところ、Observable なしで使用していますExecutors.newSingleThreadScheduledExecutor().scheduleWithFixedDelay(....)

0 投票する
1 に答える
84 参照

scala - def apply[T](items : T*) が見つかりません: rxjava の Observable で rx.lang.scala.Observable[T]

たとえばObservable(3, 2, 1)、メソッドを使用する必要がありますが、ここまたはここdef apply[T](items : T*) : rx.lang.scala.Observable[T]には存在しません

誰か説明を手伝ってくれませんか?

0 投票する
1 に答える
3776 参照

java - RxJava -- 無限ストリームの終了

リアクティブ プログラミングと RxJava を調査しています。楽しいのですが、答えが見つからない問題に行き詰まっています。私の基本的な質問: それ以外の場合は無限に実行されている Observable を終了するための反応に適した方法は何ですか? また、私のコードに関する批評や反応的なベスト プラクティスも歓迎します。

演習として、ログ ファイルの末尾のユーティリティを作成しています。ログ ファイル内の行の流れは、Observable<String>. ファイルに追加されたテキストの読み取りを続行するBufferedReaderには、通常のreader.readLine() == null終了チェックを無視し、代わりに、スレッドがスリープしてロガー テキストを待つ必要があることを意味すると解釈します。

しかし、 を使用してオブザーバーを終了することはできますがtakeUntil、それ以外の場合は無限に実行されるファイル ウォッチャーを終了するクリーンな方法を見つける必要があります。私は自分のterminateWatcherメソッド/フィールドを書くことができますが、それは Observable/Observer のカプセル化を壊します - そして私は可能な限りリアクティブパラダイムに厳密にとどまりたいです.

Observable<String>コードは次のとおりです。

以下は、新しい行が来るたびに出力する Observer コードです。

私の2つの質問は次のとおりです。

  1. そうでなければ無限に実行されているストリームを終了するための反応的で一貫した方法は何ですか?
  2. 私のコードであなたを泣かせる他の間違いは何ですか? :)
0 投票する
2 に答える
3721 参照

reactive-programming - RxJavaで移動平均を計算する方法

金融ドメインでは、通常、時系列データのストリームから移動ウィンドウ集計値を計算する必要があります。例として移動平均を使用します。たとえば、次のデータ ストリームがあるとします (T はタイム スタンプ、V は実際の値)。

取得したストリームから移動平均 3 を計算するには:

移動平均を計算するには、次のようにして実行できるようです。

  1. 元のストリームから Observable を構築する
  2. 値をグループに集約して、元のストリームから Observable を構築します
  3. 集約演算子を使用して、ステップ 2 で Observable からの最終結果を計算します。

ステップ 1 と 3 は簡単に実装できますが、ステップ 2 については、現在の RxJava には移動ウィンドウ グループを生成するためのビルトイン オペレータがないようです。既存のオペレーターからソリューションを構成する簡単な方法ですが、RxJavaでこれを「エレガントに」行う方法を提案できる人はいますか?

0 投票する
3 に答える
15025 参照

java - rxjava ライブラリを追加する Android Studio

次のプロジェクト構造を検討してください。

http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.rxjava%22%20AND%20a%3A%22rxjava-core%22 (sources.jar)から .jar をダウンロードしました。 )-しかし、他の人も試しました

次に、SubProject に lib フォルダーを作成し、そこに .jar を配置しました。

Android Studio でライブラリを右クリックし、レベル: "プロジェクト ライブラリ" およびモジュール: "サブプロジェクト" で "ライブラリとして追加..." を選択しました。

rxjava はパッケージ名「rx」を使用します。このパッケージをインポートするコードをいくつか実装しています。

プロジェクトをビルドすると、次のエラーが発生します。

SubProject/build.grandle に次の行を追加する必要があることがわかりました。

しかし、それはスローします:

プロジェクト構造の周りに .jar を移動しようとしましたが、今のところうまくいきません。

プロジェクトにサードパーティのライブラリを正しく追加するにはどうすればよいですか? 「libs」フォルダを自分で作成してもよろしいですか?