問題タブ [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.

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

javascript - RxJS 5 サブクラス化 Observable - 静的メソッドは親クラスのインスタンスを返します

ここで説明されているように、Observable をサブクラス化し、リフト メソッドをオーバーライドすることで、RxJS Observable クラスをサブクラス化しようとしています。

これは、プロトタイプに追加するすべての演算子で機能しますが、サブクラスの新しい Observable をインスタンス化しようとすると (たとえば、MyObservable.from([1, 2, 3]) を使用して)、親クラスの Observable が取得されます。

Observable.return / Observable.from / を使用して期待どおりに動作するように、Observable を正しくサブクラス化するにはどうすればよいですか? jsbin

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

android - Android 用に rxcpp をコンパイルする

github から RxCpp をダウンロードし、CMakeLists.txt を次のように変更します (VS2015 でクロス プラットフォーム プロジェクトをビルドするために、Microsoft によって変更された CMake を使用します)。

次のコマンドで Project.sln ソリューションを作成しました。

次の目的で、CMake によってビルドされたプロジェクトを少し調整しました。

  1. C++11 のサポートを有効にする
  2. 例外を有効にする
  3. STL の使用 : GNU STL スタティック ライブラリ (gnustl_static)

次のコードを含む単純な cpp ファイルを追加しました。

プロジェクトがコンパイルされず、何百ものエラーが発生します。この行だけでコンパイルしようとすると:

すべて正常に動作します。私が行った場合

インテリセンスは、いくつかの方法を認識しているようです (あまり多くはありません)。何が起こっているのか分かりません。私は立ち往生しています。誰かが何を試すべきかについて何か提案がありますか? Android 用の RxCpp のコンパイルに成功した人はいますか?

//更新 - 2016 年 3 月 1 日

分析の結果、ほとんどのエラー メッセージはコンパイル エラーではなく、IntelliSense エラーに関連していることが判明しました。したがって、現在、ライブラリは正常にコンパイルされています。次のように、単純な c++ 関数を使用する単純な Xamarin アプリケーションをセットアップしました。

電話でコンパイルして展開すると、すべて正常に動作します(実際には「リアクティブ」コードが使用されていないとしても...)。問題は、次の行のコメントを外すときです。

その後、プログラムは正常にコンパイルされ (エラーなし)、libTest.so が生成されます (サイズはコメント行のあるバージョンのほぼ 2 倍になります) が、Test2() 関数が呼び出されるとすぐに次のようになります。

System.DllNotFOundException: libTest.so

adb.exe で確認したところ、実際には libTest.so が /data/data/"package_name"/lib/ の下に存在します。

どうしたの?

//更新 - 2016 年 6 月 1 日

最後に、問題を再現するレポを準備する時間を見つけました。

https://github.com/easysoft2k15/AndroidRxCppTest.git

私の疑いでは、何らかの理由で、アプリケーションをクラッシュさせる行を含めると、.so lib のサイズが特定の制限を超えて増加し、Android がそれをロードしなくなります。あなたの考えは非常に高く評価されます。

ありがとうございました

アレッサンドロ

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

java - オブザーバブルを重複するグループに分割し、それらを結合します

一連の整数を指定して、一連の条件に基づいて異なるグループに分割したいと考えています。

  • 条件のセットは変更される場合があります
  • 各要素は、ゼロ、1 つ、または複数のグループに属することができます。つまり、これらのグループは互いに重複する可能性があります。

たとえば、次のコードは、シーケンス1..12を 2 と 3 の倍数の 2 つのグループに分割します。

出力:

私の質問は次のとおりです。

  1. 上記の例では、条件セットが 1 つしかないことに注意してくださいdivisors。後で更新するにはどうすればよいですか?変化する変数は、自然にホットなオブザーバブルと考えることができると思います。Observable<Observable<Integer>>しかし、この場合、 2番目のオブザーバブルでホットを使用する方法がわかりません。
  2. のように、分割されたグループを特定の順序で結合する方法はjoin?
  3. 問題のより良い解決策はありますか?
0 投票する
2 に答える
395 参照

system.reactive - subscribeOn と observeOn は、最終的なサブスクライバーによってのみ呼び出されるべきですか?

Intro to RxScheduling and Threadingセクションでは、次のように述べています。

SubscribeOn と ObserveOn の使用は、最終的なサブスクライバーによってのみ呼び出される必要があります

また、UI アプリケーションでは、通常は最終サブスクライバーであるプレゼンテーション レイヤーが、これらのメソッドを呼び出す必要があるとも述べています。

これが不便な状況がいくつか見られるため、アドバイスがしっかりしているかどうか疑問に思っています。

  1. まず第一に、プレゼンテーション レイヤーが、データ レイヤーからの Observable をサブスクライブする場所を決定する必要があるとは思いません。私の意見では、データがデータベースから来ているのか、REST API から来ているのか、メモリから来ているのか、プレゼンテーション層は認識しないはずです。このため、subscribeOn()Observable を返す前にデータ層が呼び出し、IO スケジューラまたは直接のスケジューラを都合のよいように渡すと便利です。
  2. プレゼンテーション レイヤーが何らかのサービスまたはユース ケースから Observable を取得し (データ レイヤーから取得)、このサービスが何らかの計算スケジューラでストリームを処理する必要があると判断した場合、なぜプレゼンテーション レイヤーはこれを気にする必要があるのでしょうか?
  3. 元は UI からのストリームはどうでしょうか。そのため、UI スレッドでサブスクライブする必要があります。次に、何らかのサービスに送信されて何らかの作業が行われ、最終的にプレゼンテーション層に戻って UI スレッドで観察されます。これには、UI ストリームがsubscribeOn()UI スケジューラ、次にobserveOn()他のスケジューラ、最後observeOn()に UI スケジューラである必要があります。この場合、最後のサブスクライバーsubscribeOn()observeOn()のみ呼び出すことができるということは、ストリームを UI スレッドでのみ処理できることを意味します。

アプリケーションのアーキテクチャを犠牲にし、最終的なサブスクライバーのみがこれら 2 つのメソッドを呼び出すことでスレッドを簡単に切り替える Rx の機能を無視する正当な理由はありますか?

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

java - Reactivex でオブザーバブルをチェーンする

次のシナリオがあり、RxJava で変換する必要があります。

  1. ローカル データベースから 30 個のアイテムを取得する
  2. これらの 30 エントリで API を呼び出します (1 つの要求)
  3. ローカルデータベースからアイテムを削除します(これにはアイテムリストへのアクセスが必要です)
  4. ループ (?) db が空になるまでこれを 1 ~ 3 回繰り返したい

私がこれまでに行ったことは次のようになります。

質問:

  1. publish を呼び出すのは正しいことですか、それとも when/and/then を使用する必要がありますか?
  2. モデルリストをあるオブザーバブルから別のオブザーバブルに渡すにはどうすればよいですか?

ありがとう

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

javascript - Rxjs merge() が機能しない

コンテキスト: JSON ツリーを使用して迅速なコードを生成するために、事前注文形式でツリーをトラバースし、すべてのリーフ ノードに到達して、ツリーを効果的に配列にフラット化します。

説明: Rx.Observable.generate() を使用して配列要素から監視可能なストリームを作成していますが、フィルタリングすると奇妙な結果が得られます。以下に、煮詰めた例を示します。

例:

質問:出力結果が期待どおり 0,1,2,3,4,5,6,7,8,9 ではなく、1,3,5,7,9 になるのはなぜですか?

マージを適用する方法は問題ではないようです... 逆にすると、出力 0,2,4,6,8 も得られます。

編集、npm インストール & ノード バージョン user3743222: フィードバックをお寄せいただきありがとうございます。プロジェクトに関する情報は次のとおりです。

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

java - RxJava を使用して 2 つの Observable の交差を取得するより良い方法はありますか

RxJavaを使用して、同じタイプを発行する別のObservableと交差しようとしている多数のアイテムを発行する1つのソースObservableがあります。いくつかのオプションを検討した結果、物事を構造化するための最も一貫した方法は次のようになります。

ここで期待される出力は、結果の Observable をサブスクライブすると、12 個のアイテムが発行されることです。getMatches の契約により、結果をバッファリングする必要があります。

一見、これは機能するように見えますが、最もクリーンな方法とは思えません。パフォーマンス上の理由から、すべてのアイテムで交差チェックを実行できないため、ここではフィルターが適用されないようです。flatMap をいじってみましたが、ソース オブザーバブルからの完了通知ではなく、getMatches オブザーバブルがストリームを完了します。

これを構造化するより良い方法はありますか?

編集:このスタイルのコードで何が起こっていたのかを明確にするために:

これは明らかにすっきりしていますが、ログを追加すると (元のスニペットと同じデータ サイズを仮定すると:

「処理中」ログの 20 のインスタンスを取得した後、不思議なことに、「処理後」からわずか数行のログ行しか取得しません (12 と予想される場合)。本来よりも早く on complete を呼び出しているようです。多分私は何か間違った構造をしていますか?

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

c# - Reactivex における配列の概念

こんにちは、ReactiveX c# を使い始めています。概念を除いて、すべて良さそうです。

リアクティブ配列(またはコレクションまたはリスト)の作成方法がわかりません

ObservableCollection のようなものが欲しいのですが、リアクティブの概念があります。つまり、配列のメンバーはどれもリアクティブではなく、Observable コレクションと同じように、配列自体がリアクティブであることを意味します。

リアクティブのすべてが単なるストリームである場合、これを可能にする方法がわかりません...

問題は、リアクティブ配列を取得するために使用するインターフェイスまたはオブジェクトは何ですか?

ありがとう