問題タブ [rx-scala]
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.
rx-java - RxJava Observable を RxScala Observable に変換する
私は Scala で小さな JavaFx アプリケーションを作成しており、これには RxScala と RxJavaFx を使用するのが好きです。次のコードでRxJava Observable
を取得します。
明らかに、私は Scala で書いているので、代わりにRxScala Observable
を使いたいと思っています。今、この投稿JavaConversions._
を見つけました。暗黙の変換クラスをインポートするか、直接呼び出す必要があると言っていますtoScalaObservable
。ただし、最初のオプションではうまくいきません。2 番目のオプションは見栄えが悪くなります。
オプション1:
map
引数の型は技術的には異なりますが、RxJava も演算子を提供するため、これは機能しません。
オプション 2:
これは機能しますが、正直なところ、これは本当にひどいものに見えます!
質問 1:何かが足りないのでしょうか、それとも本当にこの 2 つの選択肢しかないのでしょうか?
つまり、Java の標準コレクションから Scala のコレクション (およびその逆) に変換するには、2 つのオプションがあります:JavaConverters
とJavaConversions
. 前者はキーワードasJava
/を導入しasScala
ますが、後者は一種の同等のものでrx.lang.scala.JavaConversions
あり、暗黙的に変換を行います (運が良ければ!)。これら 2 つの設定をグーグルで調べると、ほとんどの人がキーワードをJavaConverters
使用したより明示的な暗黙の変換を好むことは明らかです。asScala
質問 2:JavaConverters
RxScalaのような類似の構造はありますか? これにより、上記のコードがよりクリーンになります。
rx-java - RxJava 2.0 に基づく RxScala
RxJava 2.0 は完成に近づいています (RC3)。このバージョンに基づく (実験的な) RxScala 実装はありますか? RxJava 2.0 は Java 8 をターゲットにしています。これは RxScala に影響を与えますか? たとえば、Scala 2.12 が前提条件になるのでしょうか?
asynchronous - Observer.onNext 内の RxJava/RxScala 非同期コード
あるストリームからデータベースにイベントを格納する必要があり、そのデータベースへのクライアント ライブラリが非同期であるとします。
たとえば、次のイベントが発行されたときに、オブザーバーwriteEvent(event: MyEvent): Future[Boolean]
内で呼び出さなければならないメソッドがあります。onNext
でブロックする以外にこれを行う良い方法はありFuture
ますか?
これを実装する方法について現在私が見ている唯一の方法は、Scheduler
内部の非同期コードonNext
が完了するまで、スレッドをプールに返すことができるカスタムを作成することです。
scala - リソース不足に基づいて観測可能なバックプレッシャー
RxJava 1 / RxScala では、次の状況で観察可能なソースをどのように抑制/バックプレッシャできますか?
可能な解決策は、ブロックすることです。これは機能しますが、それは非常に洗練されておらず、複数の同時リクエストを防ぎます:
rx-java - 2つのソートされたオブザーバブルの違いのオブザーバブルを作成する方法は?
ソートされた double の 2 つのオブザーバブルがあるとします。それらの違いを観測可能なものとして取得したいと思います。例えば:
これに対する必須の実装は単純です。まだ到達していない側のアイテムのリストを保持し、反対側からアイテムを「放出」します。
RFP の世界では、これに対する標準的なアプローチは何ですか? 私は特にRxScalaを使用しています。
scala - TCPソケットをArray[Byte]のObservableにする
私の Android アプリではSocket
、バイト配列を送受信するために a を使用する必要があります。便宜上、にObservable
接続して作業したいと思いSocket
ます。
インターネットで検索すると、次のコードが見つかりました。
動作しますが、一度に 1 文字ずつ出力します。たとえば、「hello there」文字列が送信された場合、出力は次のようになります。
しかし、サブスクリプションでバッファリングされたバイト配列を受け取りたいです。どうすればそれを達成できますか?
java - RxScala ConnectableObservable.doOnSubscribe は呼び出されませんか?
はdoSomething
呼び出されません。RxJava のまったく同じコードが正しく機能していました。なんらかの理由で、基礎となるJava Observableに伝播されなかったようです
更新:だから私の回避策は
scala - RxJava/RxScala で groupBy と flatMap(maxConcurrent, ...) を組み合わせる
受信処理要求がありますが、共有リソースが枯渇するため、同時処理が多すぎないようにしたいと考えています。また、いくつかの一意のキーを共有するリクエストを同時に実行しないことをお勧めします。
ただし、キーごとのオブザーバブルが完了しないため、上記は機能しません。これを達成する正しい方法は何ですか?
機能しないもの: