問題タブ [concatmap]
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.
java - RxJavaのconcatMapとflatMapの違いは何ですか?
これら2つの機能はかなり似ているようです。それらは同じ署名 (accepting rx.functions.Func1<? super T, ? extends Observable<? extends R>> func
) を持ち、マーブル ダイアグラムはまったく同じに見えます。ここに写真を貼り付けることはできませんが、ここにconcatMap用の写真とflatMap用の写真があります。resultsの記述には微妙な違いがあるようですObservable
。 によって生成されたconcatMap
ものには、結果の Observable を連結した結果のアイテムが含まれ、 によって生成されたflatMap
ものには、結果の Observable を最初にマージし、そのマージの結果を発行した結果のアイテムが含まれます。
しかし、この微妙さは私にはまったくわかりません。誰でもこの違いをよりよく説明できますか。理想的には、この違いを示すいくつかの例を挙げてください。
jointable - 複数のテーブルを結合するためにネストされた concatMap を実行する最良の方法は?
RethinkDB Web サイトの concatMap api ページでは、eqJoin が concatMap + getAll で実装されていると述べており、これは他の結合よりも優れたパフォーマンスを提供するはずです。
私の場合、複数のテーブルを結合したいと思います。ここに例を示します。3 つのテーブルがあると仮定users
しdepartments
ますcompanies
。すべてのuser
ドキュメントに と が含まれdepartment id
ますcompany id
。例えば:
結合クエリの後に取得したい結果は、concatMap/eqJoin の結果と非常に似ていますが、3 つのテーブルすべてがあります。
結果を得ることができる私が書いたクエリは次のとおりです。
私の質問:
- これを行うより良い方法はありますか?
- 上記のクエリのパフォーマンスは、2 つのテーブルに対する通常の eqJoin と同じくらい良好ですか?
- これらの場合、merge を使用した場合のパフォーマンスは、eqJoin (concatMap) を使用した場合よりもはるかに悪いのでしょうか?
どうもありがとう。
rx-java - RxJava - flatmap vs concatMap - サブスクリプションで同じ注文をするのはなぜですか?
このスレッドによると、 conCatMap と flatmap はアイテムが発行される順序のみが異なります。そこで、テストを行い、整数の単純なストリームを作成し、それらがどの順序で放出されるかを確認したいと考えました。1 ~ 5 の範囲の数値を取り、それらを 2 倍する小さなオブザーバブルを作成しました。簡単。
フラットマップを使用したコードは次のとおりです。
concatMap を使用したまったく同じコード:
ログで印刷を見たとき、順序が両方で同じだったのはなぜですか? concatMap だけが順序を保持すると思いましたか?
rx-java - 異なる放出タイプを持つ複数のオブザーバブルの連鎖
オブザーバブルを一緒にチェーンする方法を見つけようとしています。既存のメソッドがあります: public static Observable<Data> getData()
. 私の他のクラスには、次の既存のコードがあります。
getData()
呼び出しをこの呼び出しにチェーンしたいと思います。どうすればいいですか?私はこれを最初に試しました:
しかし、getData() コードは実際にはメイン スレッドで実行されるため、これは機能しません。
これでもうまくいきません:
また、これを試してみると、問題はzipWith
2つのオブザーバブルが並行して実行され、実際に次々に実行したいということです。