59

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

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

4

7 に答える 7

0

他の人はすでに答えを指摘していますが、それがあまり明白でない場合、flatMap との望ましくない並列処理が作成されるリスクがあります。これが望ましくない場合は、concatMap またはオーバーロードを使用できますflatMap(Function<? super T,? extends Publisher<? extends V>> mapper, int concurrency)

于 2021-08-23T20:19:28.837 に答える