1. ホーム
  2. reactive-programming

[解決済み] RxJavaのflatmapとswitchmapの違いは何ですか?

2022-05-06 11:44:53

質問

その rxjava doc switchmap の定義はかなり曖昧で、この定義にリンクしているのは 同ページ をflatmapと呼びます。この2つの演算子の違いは何ですか?

どのように解決するのですか?

ドキュメントによると、( http://reactivex.io/documentation/operators/flatmap.html )

その switchMap は、まるで flatMap , しかし は、ソース observable から新しいイベントが発行されるまで、新しい observable からしかアイテムを発行しません。

マーブル図がそれをよく表しています。 ダイアグラムの違いに注目してください。

switchMap 2番目の オリジナル エミッション( グリーンマーブル は、その2番目の マップ エミッション( 緑色の四角 )であるため、3番目の オリジナル エミッション( ブルーマーブル が始まり、すでに最初の マップ エミッション( ブルーダイヤモンド ). 言い換えれば、唯一の 最初 のうち、2つの 地図状 緑色の発光が発生します。青色の菱形に負けたので、緑色の四角形は発光しません。

flatMap の場合、マップされた結果はすべて、たとえ "stale"であっても、出力されます。言い換えれば 両方とも 最初 そして の2番目です。 マッピングされた グリーン・エミッションが起こる -- a グリーンスクエア が出力されたはずです(一貫したマップ機能を使用した場合。 セカンド 緑色のダイヤモンドが発光しているにもかかわらず その 第一 青ダイヤ)

スイッチマップ

フラットマップ