問題タブ [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# - オブザーバーを IEventProcessor に登録する
これは、ここから取得した IEventProcessor 実装の一部です。
新しいイベントが EventHub に追加されると、ProcessEventsAsync メソッドが呼び出され、foreach ループを使用してイベントを処理できます。ここで説明した ObserverRegistry などを使用して、Observers を SimpleEventProcessor に追加したいと思います。提案された ObserverRegistry は次のようになります。
残念ながら、欠けているものがいくつかあります。複数のオブザーバーを SimpleEventProcessor に登録して、イベントが ProcessEventsAsync からすべてのオブザーバーに渡され、最終的にその When メソッドに渡されるようにするにはどうすればよいですか?
swift - RxSwift: 要件が満たされている場合にのみ Observable を圧縮する
name、surname、age、avatarImageなどのフィールドを編集できるユーザー プロファイルを想像してみてください。ユーザーが をクリックするSave
と、変更された値ごとにリクエストが送信されます。
次のようなシグネチャを持つ関数を考えてみてください。
通常、zip
これらのリクエストは次のようになります。
変更された値のリクエストのみを実行したい場合はどうすればよいですか?
java - RxJava flatMap と backpressure の奇妙な動作
RxJava でデータ同期ジョブを作成しているときに、説明できない奇妙な動作を発見しました。私はRxJavaの初心者であり、助けていただければ幸いです。
簡単に言うと、私の仕事は非常に単純です。要素 ID のリストがあり、Web サービスを呼び出して各要素を ID で取得し、いくつかの処理を行い、複数の呼び出しを行ってデータを DB にプッシュします。データの読み込みはデータの保存よりも高速であるため、OutOfMemory エラーが発生しました。
私のコードはほとんど「失敗した」テストのように見えますが、いくつかのテストを実行すると、次の行を削除することに気付きました:
それを機能させます。テスト出力の失敗は、消費されていないアイテムが積み重なり、これが OutOfMemory につながることを明確に示しています。実際のテスト出力は、プロデューサーが常にコンシューマーを待機しているため、これが OutOfMemory につながることは決してないことを示しています。
この動作の背後にある説明は何ですか? 私の実際のケースでは Observable.from(someListOfItme) である Observable.just(dt)) を削除せずに失敗したテストを解決するにはどうすればよいですか
system.reactive - RX グリッチの回避策は?
私はさまざまなプラットフォームで Reactive Extensions を試していますが、少し気になるのはグリッチです。
UIコードの場合、これらのグリッチはそれほど問題にはならないかもしれませんが、通常はそれらを回避する演算子を見つけることができますが、グリッチがあるとコードのデバッグがより難しくなります.中間結果はデバッグにとって重要ではありませんが、私の心結果がいつ中間または「最終」であるかはわかりません。
Haskell と同期データ フロー システムで純粋な関数型 FRP を少し使用したことで、それも「間違っている」ように感じましたが、それはもちろん主観的なものです。
しかし、RX を非 UI アクチュエーター (モーターやスイッチなど) に接続する場合、グリッチがより問題になると思います。正しい値のみが外部アクチュエータに送信されるようにするにはどうすればよいでしょうか?
おそらく、これは、最終結果をアクチュエータに転送する前にすべての内部イベントが処理されるように、「外部センサー」がいつ開始イベントを発生させたかを知っている「ディスパッチャ」によって解決できる可能性があります。フラップジャックスの論文に記載されているようなもの。
私が答えを得たいと思っている質問は次のとおりです。
- RX に同期通知の不具合を修正できないものはありますか?
- そうでない場合、同期グリッチを修正する RX 用の (できれば製品品質の) ライブラリまたはアプローチは存在しますか? 特にシングルスレッド Javascript の場合、これは理にかなっているでしょうか?
- 一般的な解決策が存在しない場合、RX を使用して外部センサー/アクチュエーターをアクチュエーターでグリッチなしで制御するにはどうすればよいでしょうか?
例を挙げましょう
(a,b)
コントラクトが存在する一連のタプルを出力したいとします。
n は自然数ストリーム = 0,1,2....
だから私は次のシーケンスを期待しています
RX では、より興味深いものにするために、b ストリームの計算にフィルターを使用します。
これにより、私がグリッチであると信じていたものが得られます(不変条件/契約の一時的な違反):
これが CombineLatest の正しい動作であることは理解していますが、実際の純粋な FRP システムでは、これらの中間の不変条件に違反する結果が得られないため、これはグリッチと呼ばれていると思いました。
この例では、Zip を使用できないことに注意してください。また、WithLatestFrom を使用すると誤った結果が返されることに注意してください。
もちろん、この例を 1 つのモナド計算に単純化して、n 個のストリームの出現をマルチキャストしないようにすることもできます (これは、フィルター処理ができず、単にマップすることを意味します)。 ' 監視可能なストリームを分割して再結合するたびに:
たとえば、FlapJAX では、これらの問題は発生しません。
これは意味がありますか?
どうもありがとう、ピーター
pagination - Angular2 と ReactiveX のページネーションのアイデア
ReactiveXを学んでいます。これを読みやすくするために、エラー チェック、ログ、およびその他のビットを省略しました。
オブジェクトのコレクションを JSON として返すサービスがあります。
コンポーネントはサービス メソッドを呼び出し、データを配列に格納します。
目標は、このデータをテンプレートにグループで表示することです。
ここで、ページネーションを追加して、一度に 3 つまたは 4 つのパネルのみを表示したいと考えています。
私の最初のアイデアは、bufferCountを使用してグループ内のオブジェクトを発行することでした:
これで多次元配列ができたので、それに応じてコンポーネントを更新する必要があります。
各インデックスがコレクションの 3 つのメンバーを持つ、きれいで整頓された配列が得られると思いました。私は間違っていました。コレクション全体がdata[0]に保存されています。次に、チェーンを少し上に切り替えてみました。
おっ。この時点で、私を自分から救ってくれる人が明らかに必要です。私のラムダを見てください!この時点では、データがコンポーネントに完全に戻ることさえありません。これは、ReactiveX の方法でこれを行う方法を学ぶ必要がないのではないかと考え始めたときです .
私の次のコースは、Angular を使用して値を反復処理することでした。スライスパイプでいくつかの変数を使用してみました:
Angular 2 はまだベータ版ですが、パーサーが演算子や式を適切でない場所で使用しているとして吠え続けたとき、私は疲れていたことがわかりました。
私はこれらの過ちから学ぶ準備ができているので、より大きな過ちを犯すことができます. 助言がありますか?
[編集]
私は ng2-pagination を使用することにしました。ただし、rxjsで実装してみたいので、それを答えとして投稿するつもりはありません。
したがって、ここまで来て、機能するものだけが必要な場合は、ng2-pagination (この記事の執筆時点ではベータ 2) が非常にうまく機能します。
reactive-programming - ReactiveX はリアクティブ プログラミングと見なされますか?
「関数型リアクティブ プログラミング」と呼ばれることもありますが、これは誤称です。ReactiveX は関数型かもしれませんし、リアクティブ型かもしれませんが、「関数型リアクティブ プログラミング」は別物です。主な相違点の 1 つは、関数型リアクティブ プログラミングが時間の経過とともに連続的に変化する値で動作するのに対し、ReactiveX は時間の経過とともに放出される離散値で動作することです。
一方、ウィキペディアの Functional Reactive Programming ページから、ReactiveX は「実装」セクションにリストされています。
実装[編集]
- cellx、javascript のリアクティブの超高速実装
- Elm、HTML、CSS、および JavaScript にコンパイルされる FRP 言語
- Ruby でのフラペチーノ FRP 実装
- Flapjax、動作/イベント FRP の JavaScript での実装
- Reactive.jl、Julia での FRP 実装
- Java、JavaScript、Python、Swift などを含む複数の言語での ReactiveX、FRP の実装
- Haskell でのリアクティブ バナナ FRP 実装
- Swift と Objective-C で実装された ReactiveCocoa FRP
- 純粋な Swift に実装された ReactiveKit FRP
- Haskell での Reflex FRP の実装
- Scala.Rx Scala (および Scala.js) での FRP 実装
- Sodium、C#、C++、Haskell (非推奨[12])、Java、Rust、および Scala での FRP 実装
- Haskell での Yampa FRP の実装
私は ReactiveX の機能をよく理解しており、「リアクティブ プログラミング」と「関数型リアクティブ プログラミング」についても調査しましたが、それらの間の関係をまだ区別できません。
実際、ウィキペディアのページは誤称であるか、「実装」セクションに例を誤ってリストしていると思います。なぜなら、 cellxとReactiveX (両方とも例にリストされています) が完全に異なる問題を解決するために構築されていることを知っているからです。