問題タブ [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.
java - 通常の Java イベントから Observable を作成する
Observable
従来のJavaイベントパターンからRx-Javaを作成する最良の方法は何ですか? つまり、
実装したい
私が思いついた実装は次のとおりです。
しかし、私はそれがあまり好きではありません:
非常に冗長です。
ごとにリスナー
Observer
が必要です (理想的には、オブザーバーがない場合はリスナーがなく、それ以外の場合は 1 つのリスナーが必要です)。これは、オブザーバー カウントを のフィールドとして保持し、OnSubscribeFunc
購読時に増分し、購読解除時に減分することで改善できます。
より良い解決策はありますか?
要件:
イベント パターンの既存の実装を変更せずに操作する (そのコードを制御している場合は、
Observable
必要な戻り値を既に記述できます)。ソース API が変更された場合にコンパイラ エラーが発生する。
Object
実際のイベント引数の型の代わりに、またはプロパティ名の文字列を使用しないでください。
java - カスタム クラスを Observable として使用し、時間間隔でメソッドを起動する方法
私はクラスを持っていますProducer
。単純化すると、このクラスを(RxJavapublic Object readData()
)
として作成したいメソッドがあります。Observable
どのメソッドを呼び出す必要があるかを示す方法は? Producer
クラスをFuture
orに変換する必要がありIterable
ますか?
次の問題は、 をn 秒ごとreadData
に呼び出す必要があることです。fromなどの一部のメソッドにはスケジューラーパラメーターがありますが、それを適用する方法の例が見つかりません。intervalメソッドを見つけましたが、整数のシーケンスを出力します。これまでのところ、Observable なしで使用していますExecutors.newSingleThreadScheduledExecutor().scheduleWithFixedDelay(....)
java - RxJava -- 無限ストリームの終了
リアクティブ プログラミングと RxJava を調査しています。楽しいのですが、答えが見つからない問題に行き詰まっています。私の基本的な質問: それ以外の場合は無限に実行されている Observable を終了するための反応に適した方法は何ですか? また、私のコードに関する批評や反応的なベスト プラクティスも歓迎します。
演習として、ログ ファイルの末尾のユーティリティを作成しています。ログ ファイル内の行の流れは、Observable<String>
. ファイルに追加されたテキストの読み取りを続行するBufferedReader
には、通常のreader.readLine() == null
終了チェックを無視し、代わりに、スレッドがスリープしてロガー テキストを待つ必要があることを意味すると解釈します。
しかし、 を使用してオブザーバーを終了することはできますがtakeUntil
、それ以外の場合は無限に実行されるファイル ウォッチャーを終了するクリーンな方法を見つける必要があります。私は自分のterminateWatcher
メソッド/フィールドを書くことができますが、それは Observable/Observer のカプセル化を壊します - そして私は可能な限りリアクティブパラダイムに厳密にとどまりたいです.
Observable<String>
コードは次のとおりです。
以下は、新しい行が来るたびに出力する Observer コードです。
私の2つの質問は次のとおりです。
- そうでなければ無限に実行されているストリームを終了するための反応的で一貫した方法は何ですか?
- 私のコードであなたを泣かせる他の間違いは何ですか? :)
reactive-programming - RxJavaで移動平均を計算する方法
金融ドメインでは、通常、時系列データのストリームから移動ウィンドウ集計値を計算する必要があります。例として移動平均を使用します。たとえば、次のデータ ストリームがあるとします (T はタイム スタンプ、V は実際の値)。
取得したストリームから移動平均 3 を計算するには:
移動平均を計算するには、次のようにして実行できるようです。
- 元のストリームから Observable を構築する
- 値をグループに集約して、元のストリームから Observable を構築します
- 集約演算子を使用して、ステップ 2 で Observable からの最終結果を計算します。
ステップ 1 と 3 は簡単に実装できますが、ステップ 2 については、現在の RxJava には移動ウィンドウ グループを生成するためのビルトイン オペレータがないようです。既存のオペレーターからソリューションを構成する簡単な方法ですが、RxJavaでこれを「エレガントに」行う方法を提案できる人はいますか?
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」フォルダを自分で作成してもよろしいですか?