問題タブ [rx.net]
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# - IObservable の最後の既知の値を取得するにはどうすればよいですか?
Rx.Net を使用して画像エディターを構築しているとします。ユーザーは、マウスを使用してキャンバスを操作できます。適用される操作は、現在選択されているツールによって異なります。たとえば、「描く」ツールと「消す」ツールがあるかもしれません。一度に選択できるツールは 1 つだけです。
3 つのストリームがあります。1 つはマウス イベント用です。1 つはマウスをクリックして発行されたコマンド用です。ツール選択用の別のもの:
ストリームは他の 2 つに依存します。commands
ユーザーがマウスをクリックするとコマンドが発行され、生成されるコマンドは最後に選択されたツールに依存します。コマンドは、ユーザーがツールを変更したときに発行されるべきではなく、マウスをクリックしたときにのみ発行されるべきであることに注意してください。
これで、最後に選択したツールを次のような変数に格納できます。
ストリームselectedTool
を構築するために使用できます。commands
ただし、これは「リアクティブ」な方法とは思えません。ストリーム構成を使用してこれと同じロジックを実現できますか?
私は見ましCombineLatest
たが、ユーザーがツールを切り替えると、不要なイベントが生成されます。ユーザーがクリックしたときにのみコマンドを発行したい。
c# - Rx.Net でサイドストリームを処理するにはどうすればよいですか?
Rx.Net を使用してシミュレーションを構築しています。ユーザー入力は、初期状態での状態変換のストリームとしてモデル化されます。を使用Scan
して、これらの変換を現在の状態に解決できます。
問題は、変換に副作用がある可能性があることです。これらは、 を実装するイベント オブジェクトとしてモデル化されていますISimulationEvent
。
私はいくつかのアプローチを試しました:
- 副作用を現在の状態オブジェクトに保存し、変換ごとにクリアします
Tuple
ゲーム状態のa を返しIList<ISimulationEvent>
、Scan
- 副作用のコールバックを渡してそれらを集約する
各ソリューションは「ハッキー」に感じます。
Rx.Net を使用してこれを実装するクリーンな方法はありますか?
これは、コマンドが状態に折り畳まれる方法の例です。
それぞれが副作用としてApply
のストリームを出力する必要があります。ISimulationEvent
ただし、結果も保持する必要がありSimulationState
ます。
c# - FRP (Rx.Net) で循環依存関係をモデル化するにはどうすればよいですか?
Rx.Net を使用して Tic-Tac-Toe を実装することにより、関数型リアクティブ プログラミングについてさらに学習しようとしています。私が抱えている問題は、ゲーム ロジックに循環依存関係があるように見えることです。
commands
ストリーム ( 、など) は、ユーザー入力ストリームから生成されますPlaceToken
。ResetGame
ゲームの現在の状態 ( ) は、初期状態から始めて前の状態にboardStates
適用することによって導出されます。commands
ただし、commands
ストリームはストリームに依存する必要がありboardStates
ます。これは、現在の状態によって有効なコマンド セットが変化するためです。
たとえばPlaceToken
、ユーザーが空のタイルをクリックしたときにのみコマンドを発行する必要がありますが、空のタイルのセットは現在の状態によって定義されます!
要約すると、互いに依存しているように見える2つのストリームがあります。関数型リアクティブ プログラミングでこれを回避するにはどうすればよいですか?
c# - スロットルするが、結果が遅すぎる場合は結果を破棄する
ユーザーが検索語を入力すると、リストが継続的に更新され、提案が提供される UI を作成しています。
私の最初のことは、Rx プリミティブ Throttle が完全に一致していたということでしたが、それは私が半分そこにいるということでした。
提案のフェッチには時間がかかるため、UI スレッドではなく非同期で取得します。
問題は、ユーザーがスロットルの時間間隔を再度入力した場合に、結果を破棄/スキップ/破棄したいことです。
例えば:
- 時間が始まり、ユーザーがキーを押す: 0ms
- スロットルは 100ms に設定されています。
- フェッチには 200 ミリ秒かかります。
- 150 ミリ秒で、ユーザーは別のキーを押しました
Throttle を使用すると、最初のフェッチが先に進み、GUI 提案リストにデータが入力されます。私が学びたいのは、最初のフェッチがもはや関連していないため、どうすればキャンセルできるかということです。2 回目のキー押下のみが、GUI の更新をトリガーする必要があります。
これが私が試したものです
(私は ReactiveUI を使用していますが、Q は Rx に関するものです)
.net - 作業を待機する .NET タスク
仕事を待つサーバー上にスレッドを作成したい。サイトにアクセスするユーザーごとに 1 つのスレッドが必要です。thead.sleep(100) を使用して while ループを作成すると機能しますが、効率的ではないようです。各訪問者に属する各タスクを追跡して、winform 関連オブジェクトにアクセスできるようにします。
スレッドが必要なのは、何年もの間 winforms を使用しており、多くのコードがコード ビハインド フォームにあるためです。そのため、ユーザーごとに MainForm のインスタンスを起動し、ユーザーがサイトにアクセスしている間、それをメモリに保持する必要があります。html の UI はかなり馬鹿げていて、ソケットが提供するシグナル (メッセージボックスを開く、小さなフォームを開くなど) に応答するだけです。たとえば、メッセージボックス (yes/no) の場合、サーバーはプロセスを続行する前にユーザーの選択を待つ必要があります。
最初の悪い設計により、機能し、高速なこのアプローチを採用せざるを得なくなりました。待機ループをより良いもの (より簡単/高速) に置き換えたいだけです。開発に1年余分にかかるので、完全にやり直すことはできません
おそらくrx.NETが役立つかもしれませんが、私はそれを知りません。
ここに関連する答えがいくつかありますが、明らかではありません。
ありがとう
フェリックス
c# - GroupBy で集計して結果を待つ方法
たとえば、各プレーヤーがクリケットの名簿で移動した距離を追跡しているとします。次のオブジェクトがあるかもしれません
- トリップ (IList レグ)
- レッグ (距離、期間、プレイヤー、およびトリップに属する)
- 選手(所属チーム)
- チーム
Reactive Extensions を使用してこのデータを集計したいと思います。これが私の最初の試みです:
2 番目の Select() ステートメントの前に合計が完了していることを確認するにはどうすればよいですか?
c# - Rx.Net GroupBy 実装で要素シーケンスが欠落していることはめったにありません
RX 2.2.5 を使用しています。サブオーダーをロードする2つのビューがあります
groupBy が要素のすべてのシーケンスを取得する前に、groupby の後に問題が発生し、要素シーケンスをほとんど見逃すことはありません。ログから明らかなように、同時実行性の問題はないと思います。これらのログの生成には、カスタム Snoop 拡張メソッドが使用されます。
Format Time : (スレッド) : Msg
ご覧のとおり、groupby onNext が 2 回呼び出される前ですが、1 つ逃した後です。ここで Rx 文法に何か問題がありますか、それとも既知の問題ですか? どんな洞察も役に立ちますか?さらに説明が必要な場合は、親切にコメントしてください。
更新: 作業/望ましいログの追加:
Update2:バグまたは機能の可能性
GroupBy は、fireNewMapEntry が true ( GroupBy.cs ) の場合にのみ groupedObservable を起動し、これがここで発生します。
ここで、_map は typeDictionary<TKey, ISubject<TElement>>
です。これが問題になる可能性がありますか?
c# - StartWith のような拡張機能はありますが、監視可能なシーケンスの最後に使用できますか?
監視可能なシーケンスに追加の「クロージング」アイテムを追加したいと考えています。StartWith
監視可能なシーケンスの最後に似ている Reactive LINQ 拡張機能はありますか?
最後の要素を起動していないように見えますが、これは私が望むものの概算です: