問題タブ [reactivex]
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.
c# - サブジェクトが .NET Reactive Extensions で推奨されないのはなぜですか?
私は現在、.NET 用の Reactive Extensions フレームワークに取り組み始めており、見つけたさまざまな紹介リソース (主にhttp://www.introtorx.com )を調べています。
私たちのアプリケーションには、ネットワーク フレームを検出する多くのハードウェア インターフェイスが含まれます。これらは私の IObservable になります。その後、これらのフレームを消費したり、データに対して何らかの変換を実行したり、新しいタイプのフレームを生成したりするさまざまなコンポーネントがあります。たとえば、n フレームごとに表示する必要がある他のコンポーネントもあります。Rx は私たちのアプリケーションに役立つと確信していますが、IObserver インターフェイスの実装の詳細に苦労しています。
私が読んだリソースのほとんど (すべてではないにしても) は、IObservable インターフェイスを自分で実装するのではなく、提供されている関数またはクラスのいずれかを使用するべきだと述べています。私の調査によると、 を作成するSubject<IBaseFrame>
と必要なものが得られるようです。ハードウェア インターフェイスからデータを読み取り、Subject<IBaseFrame>
インスタンスの OnNext 関数を呼び出す単一のスレッドが作成されます。その後、さまざまな IObserver コンポーネントがそのサブジェクトから通知を受け取ります。
私の混乱は、このチュートリアルの付録にある次のアドバイスから来ています。
サブジェクト タイプの使用は避けてください。Rx は事実上、関数型プログラミングのパラダイムです。サブジェクトを使用するということは、潜在的に変化する状態を管理していることを意味します。変更状態と非同期プログラミングの両方を同時に処理することは、非常に困難です。さらに、多くの演算子 (拡張メソッド) は、サブスクリプションとシーケンスの正確で一貫した有効期間が維持されるように注意深く記述されています。主題を導入するとき、これを破ることができます。サブジェクトを明示的に使用すると、将来のリリースでもパフォーマンスが大幅に低下する可能性があります。
私のアプリケーションは非常にパフォーマンスが重要です。Rx パターンを使用してパフォーマンスをテストしてから、実稼働コードに入れる予定です。ただし、Subject クラスを使用して Rx フレームワークの精神に反することを行っていること、およびフレームワークの将来のバージョンでパフォーマンスが低下することを懸念しています。
私がやりたいことをするより良い方法はありますか?ハードウェア ポーリング スレッドは、オブザーバーがあるかどうかに関係なく継続的に実行されるため (それ以外の場合は HW バッファーがバックアップされます)、これは非常にホットなシーケンスです。次に、受信したフレームを複数のオブザーバーに渡す必要があります。
アドバイスをいただければ幸いです。
reactive-programming - PublishSubject から履歴データを取得するには?
からすべての履歴データを取得する方法はPublishSubject
?
それは印刷します:
b: 1
印刷されていないことがわかります。
(複数の場所からオブザーバブルを更新する必要があるため) 使用するPublishSubject
必要がある場合、後のサブスクライバーもすべての履歴データを取得できるようにするにはどうすればよいですか?
java - カスタム数値と異なる遅延で Observable を構築する方法は?
私のリアクティブ プログラムを rxscala でテストするには、次のようなものを作成する必要がありますObservable
。
どれの
- 発行番号
1
- それから待つ
1s
- 発行番号
4
- それから待つ
3s
- 発行番号
2
- それから待つ
2s
私は醜い解決策を持っていますThread
とReplaySubject
:
より良い解決策はありますか?
reactive-programming - オブザーバブル側からすべてのオブザーバーのサブスクライブを解除する方法は?
rxscala を使用すると、次のようにオブザーバブルをサブスクライブできます。
側からすべてのオブザーバー (4 つあります) のサブスクライブを解除することは可能stream
ですか?
java - ReactiveX: Observable 内の異なる要素の頻度を計算する
私は持っていObservable<String>
ます。Map<String, Int>
これを、個別の文字列ごとの出現回数を示すに変えたいと思います。
オブザーバブルには約 10 億個の要素が含まれており、そのうち 1000 個が個別のものです (したがって、データセット全体を RAM に保存することはできません)。現在、 を反復処理してObservable
更新しHashMap
ます。また、競合状態を回避するために、同じスレッドで必ず監視します。ただし、要素周波数の取得は本質的に簡単に並列化できるはずなので、それを利用すると便利です。
それを行う方法はありますか?
java - RxJavaのgroupByの振る舞いを正しく理解するには?
私は一般的にRxJavaとFPにかなり慣れていません。Observable
2 つの sを結合するコードを書きたいと思います。整数のセットが 2 つあるとします。
[0..4]
のモジュロとしてキーセレクターを使用して2
、(key, value) = {(0,0), (1,1), (0,2),...}
[0..9]
のモジュロとしてキーセレクターを使用して3
、(key, value) = {(0,0), (1,1), (2,2), (0,3), (1,4),...}
それらに参加するための私の手順は次のとおりです。
- 各セットをそのキーでグループ化します。1 番目のセットは、 キー
0
とで 2 つのグループを作成します1
。2 つ目は、キー0
、1
およびで 3 つのグループを作成します2
。 - グループの 2 つのセットのデカルト積を作成し、合計で 6 つのグループのペアをキーとして与えます:
0-0
、0-1
、0-2
、1-0
、。1-1
1-2
0-0
と のみを残して、両側に同じキーを持つペアのみをフィルタリングします1-1
。- 各ペア内で、左右のグループのデカルト積を作成します。
以下は、デカルト積を計算するためのヘルパー クラスです。
参加するコードは次のとおりです。
ただし、出力は正しくありません。
を含む行を削除するfilter
と、結果はまったくありません。正しい出力は、次のように実行する必要があります。
与える:
誰かが動作を説明できますか? どうもありがとう。
注:org.apache.commons.lang3.tuple.ImmutablePair
不思議に思う場合に使用します。
reactive-programming - グループ化後にオブザーバブルのアイテムを印刷できません
次のrxscalaコードが期待どおりに動作しない理由を理解できません:
をグループ化し、projectEvents
各projectName
プロジェクトのアイテムを印刷したいと考えています。しかし、このコードを実行すると、次のように表示されます。
######### event in project
プリントはありません。
理由がわかりません。見逃したものはありますか?