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

0 投票する
7 に答える
31831 参照

java - RxJavaのconcatMapとflatMapの違いは何ですか?

これら2つの機能はかなり似ているようです。それらは同じ署名 (accepting rx.functions.Func1<? super T, ? extends Observable<? extends R>> func) を持ち、マーブル ダイアグラムはまったく同じに見えます。ここに写真を貼り付けることはできませんが、ここにconcatMap用の写真とflatMap用の写真があります。resultsの記述には微妙な違いがあるようですObservable。 によって生成されたconcatMapものには、結果の Observable を連結した結果のアイテムが含まれ、 によって生成されたflatMapものには、結果の Observable を最初にマージし、そのマージの結果を発行した結果のアイテムが含まれます。

しかし、この微妙さは私にはまったくわかりません。誰でもこの違いをよりよく説明できますか。理想的には、この違いを示すいくつかの例を挙げてください。

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

jointable - 複数のテーブルを結合するためにネストされた concatMap を実行する最良の方法は?

RethinkDB Web サイトの concatMap api ページでは、eqJoin が concatMap + getAll で実装されていると述べており、これは他の結合よりも優れたパフォーマンスを提供するはずです。

私の場合、複数のテーブルを結合したいと思います。ここに例を示します。3 つのテーブルがあると仮定usersdepartmentsますcompanies。すべてのuserドキュメントに と が含まれdepartment idますcompany id。例えば:

結合クエリの後に取得したい結果は、concatMap/eqJoin の結果と非常に似ていますが、3 つのテーブルすべてがあります。

結果を得ることができる私が書いたクエリは次のとおりです。

私の質問:

  1. これを行うより良い方法はありますか?
  2. 上記のクエリのパフォーマンスは、2 つのテーブルに対する通常の eqJoin と同じくらい良好ですか?
  3. これらの場合、merge を使用した場合のパフォーマンスは、eqJoin (concatMap) を使用した場合よりもはるかに悪いのでしょうか?

どうもありがとう。

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

rx-java - RxJava - flatmap vs concatMap - サブスクリプションで同じ注文をするのはなぜですか?

このスレッドによると、 conCatMap と flatmap はアイテムが発行される順序のみが異なります。そこで、テストを行い、整数の単純なストリームを作成し、それらがどの順序で放出されるかを確認したいと考えました。1 ~ 5 の範囲の数値を取り、それらを 2 倍する小さなオブザーバブルを作成しました。簡単。

フラットマップを使用したコードは次のとおりです。

concatMap を使用したまったく同じコード:

ログで印刷を見たとき、順序が両方で同じだったのはなぜですか? concatMap だけが順序を保持すると思いましたか?

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

rx-java - 異なる放出タイプを持つ複数のオブザーバブルの連鎖

オブザーバブルを一緒にチェーンする方法を見つけようとしています。既存のメソッドがあります: public static Observable<Data> getData(). 私の他のクラスには、次の既存のコードがあります。

getData()呼び出しをこの呼び出しにチェーンしたいと思います。どうすればいいですか?私はこれを最初に試しました:

しかし、getData() コードは実際にはメイン スレッドで実行されるため、これは機能しません。

これでもうまくいきません:

また、これを試してみると、問題はzipWith2つのオブザーバブルが並行して実行され、実際に次々に実行したいということです。