問題タブ [system.reactive]

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 投票する
1 に答える
457 参照

c# - Rx を使用して Twitter 検索を非同期的にクエリする方法は?

特定のキーワードで Twitter 検索 API を非同期的にクエリするために、Rx (Reactive Framework) を使用することを考えています。作成したいサンプル アプリは、新しいツイートをコンソールに表示できる必要があります。

それが可能だと思いますか?標準のプログラミング手法を使用するよりも簡単でしょうか?

どうやってそれをしますか?

ありがとう!ジェレミー

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

.net - IObservable のしくみ.Average は動作するはずですか?

アップデート

Jon Skeet が正しかったようです (大きな驚きです!)。問題は、Average拡張機能が継続的な平均を提供するという私の仮定にありました (そうではありません)。

私が求めている動作のために、単純なContinuousAverage拡張メソッドを作成しました。その実装は、同様のことを望む他の人のためにここに含めています。

私は先に進んで、他の明白な候補についても上記のようなことをすることを考えContinuousCountています. それについて何か考えはありますか?ContinuousSumContinuousMinContinuousMaxContinuousVarianceContinuousStandardDeviation


元の質問

私はRx Extensionsをあちこちで少し使用していますが、基本的な考え方は理解できたと感じています。

ここで奇妙なことがあります。これを書いた場合、次のような印象を受けました。

IObservable<double>2 つのオブジェクト (bidsavgOfBids)を取得します。1 つは基本的に私の からのすべての市場入札のストリームであり、もう 1 つはこれらの入札の平均MarketDataProviderのストリームです。

だから、このようなもの:

私のavgOfBidsオブジェクトは何もしていないようです。私は何が欠けていますか?私はおそらくAverage実際に何をすべきかを誤解していると思います。IObservable<T>(これは、Max、などのすべての集約のような拡張メソッドにも当てはまるようですCount。)

0 投票する
5 に答える
3316 参照

c# - シーケンスを再評価せずに IObservable の前の要素を取得する

シーケンス (Reactive Extensions for .NET) で、IObservable以前の要素と現在の要素の値を取得して、それらを比較できるようにしたいと考えています。以下のようなタスクを実行する例をオンラインで見つけました。

シーケンスを2回評価することを除いて、うまく機能しますが、これは避けたいと思います。次のコードで 2 回評価されていることがわかります。

出力には、シーケンス内の要素の 2 倍のデバッグ行が表示されます。

なぜこれが起こるのか理解していますが、これまでのところ、シーケンスを 2 回評価しない代替手段は見つかりませんでした。以前と現在を 1 つのシーケンス評価だけで組み合わせるにはどうすればよいですか?

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

.net - Reactive Extensions(Rx)を使用したRESTクライアントAPIの作成

Reactive Extensions(Rx)の適切なユースケースに頭を悩ませようとしています。引き続き発生する例は、UIイベント(ドラッグアンドドロップ、描画)、およびRxがWebサービス呼び出しなどの非同期アプリケーション/操作に適しているという提案です。

私は、RESTサービス用の小さなクライアントAPIを作成する必要があるアプリケーションに取り組んでいます。4つのRESTエンドポイントを呼び出す必要があります。3つは参照データ(空港、航空会社、ステータス)を取得するためのもので、4つ目は特定の空港の飛行時間を提供するメインサービスです。

3つの参照データサービスを公開するクラスを作成しました。メソッドは次のようになります。

GetFlightsメソッドでは、各フライトに、出発する空港とフライトを運用している航空会社の参照を保持する必要があります。そのためには、GetAirportsとGetAirlinesからのデータを利用できるようにする必要があります。各空港、航空会社、ステータスは辞書(つまり辞書)に追加されるので、各フライトを解析するときに参照を簡単に設定できます。

私の現在の実装は次のようになります。

現在の実装はSergeyの回答に基づいており、ForkJoinを使用してシーケンシャル実行を保証し、Flightsの前に参照データがロードされるようにします。この実装は、以前の実装のように「ReferenceDataLoaded」イベントを発生させるよりもはるかに洗練されています。

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

.net - RxのIConnectableObservables

誰かがObservableとConnectableObservableの違いを説明できますか?Rx Extensionsのドキュメントは非常にまばらで、ConnectableObservableがどのような場合に役立つのかわかりません。

このクラスは、Replay/Pruneメソッドで使用されます。

0 投票する
6 に答える
4565 参照

java - Java のリアクティブ拡張機能

Java のReactive Extensions (.NET) に相当するものはありますか?

Rx (リアクティブ拡張機能) について

Rx は、監視可能なコレクションを使用して、非同期およびイベント ベースのプログラムを作成するためのライブラリです。

JBOSS のDroolsなどのルール エンジンは知っていますが、Microsoft .NET のアプローチに近い方法は他にありますか?

0 投票する
5 に答える
9142 参照

c# - Rxの実際の例

重複の可能性:
リアクティブエクステンションの使用の良い例

私はしばらくの間ReactiveExtensionをいじっていますが、ほとんどの場合、WPFフロントエンド内でのユーザー主導のイベントの処理/作成に限定されています。

これは、非同期プログラミングを行うための非常に強力で新しい方法です。他の人がそれを使って何をしているのか知りたいのですが、現在のやり方をどこで改善できると思いますか?

0 投票する
6 に答える
2065 参照

.net - IObservable を取得するにはどうすればよいですか「非標準」イベントからのRxで?

これが私の言いたいことです。イベントを公開する API を使用しているとしますが、これらのイベントは標準EventHandlerまたはEventHandler<TEventArgs>署名に従っていません。たとえば、1 つのイベントは次のようになります。

IObservable<TEventArgs>通常、イベントからを取得したい場合は、次のようにします。

しかし、これは機能しません。なぜなら、UpdateイベントはEventHandler<UpdateEventArgs>、実際にありませんUpdateEventArgs。基本的には、それ自体が独自のものであるからです。

明らかに、(つまり)から派生する独自のクラスを定義し、イベントを提供するオブジェクトをラップする別のクラスを作成し、ラッパー クラスに である独自のイベントを与え、そのから取得することができます。しかし、それは面倒な作業量です。EventArgsUpdateEventArgsUpdate UpdateEventHandler<UpdateEventArgs>IObservable<UpdateEventArgs>

IObservable<[something]>このような「非標準」イベントから作成する方法はありますか、それとも運が悪いのでしょうか?


更新:Jon Skeet の回答から、次のオーバーロードの方向に突き進んでいますObservable.FromEvent:

Func(Of EventHandler(Of TEventArgs), TDelegate)ただし、その部分について頭を悩ませていることは認めざるを得ません。私には逆に見えます(?)。明らかに、私には欠けているものがあります...

とにかく、それが役立つ場合、これは同等の C# コードがどのように見えるかだと思います (私は完全に正直に言うと、これについてはよくわかりません。私は一般的に C# を好みますが、このコードは 1 つの作業です私の同僚は主に VB.NET で書いており、VB.NET ではイベントを宣言するための複数の構文が許可されています):

ここで注意が必要なのは、なんらかのクラスから派生する必要があるように見えることEventArgsです。私が使用している API には、そのようなクラスはありません。だから、最低限、私はそれを書く必要があります。しかし、それはかなり些細なことです (基本的に 1 つのプロパティ: BaseEvent)。

最終的に、このオーバーロードに必要なコードは C# では次のようになると思います。

まず第一に、私はこれをまっすぐに持っていますか?第二に、VB 9 を使用すると、独自のメソッドを作成せずに上記を達成する方法は本当にないというのは正しいですか?

そもそも、まったく間違った角度からこの問題に取り組んでいるような気がします。しかし、私は本当によくわかりません。

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

c# - System.Interactive:Memoize()とMemoizeAll()の違い?

Reactive Extensions の System.Interactive.dll (v1.0.2521.0) には、メソッドとメソッドのEnumerableEx両方があります。API ドキュメントは、どちらも同じです。MemoizeMemoizeAll

元の列挙型を 1 回だけ列挙し、その結果をキャッシュする列挙型を作成します。

ただし、これらの方法は明らかに同一ではありません。を使用するMemoizeと、最初に列挙したときに列挙型に値があり、2 回目には空のように見えます。使用するMemoizeAllと、どちらのメソッドの説明からも期待できる動作が得られます。結果を何度でも列挙して、毎回同じ結果を得ることができますが、ソースは 1 回しか列挙されません。

これらの方法の意図的な違いは何ですか? ユースケースはMemoize何ですか?ドキュメントが非常に紛らわしいため、かなり役に立たない方法のようです。

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

c# - Rx を使用して非同期イベントを同期する

Reactive Extensions for .NET (Rx)を有効に活用したいと考えており、いくつかの基本的なタスクを実行するための情報を得たいと考えています。私がやろうとしていることを説明するために、非同期イベントを持つ外部コンポーネントがある不自然な例があります:

コンポーネントは、 を呼び出すことによって開始されBeginStart()ます。このメソッドはすぐに戻り、後でコンポーネントの起動が完了すると、Startedイベントが発生します。

Startedコンポーネントをラップして同期開始メソッドを作成し、イベントが発生するまで待機したいと考えています。これは私がこれまでに思いついたものです:

を取り除きたいのですがManualResetEvent、Rx に解決策があることを期待しています。しかし、どのように?