合成(Combination)
複数の Observable ソースを組み合わせて新しいシーケンスを生成するファクトリメソッドをまとめています。これらは 結合オペレーター の静的ファクトリメソッド版であり、同じ型のソースを配列や IEnumerable で受け取ります。
API 一覧
最新値の合成
| API | 概要 |
|---|---|
| CombineLatest | 各ソースの最新値を組み合わせる(いずれかが発行するたびに) |
| ZipLatest | 全ソースが新しい値を発行するまで待ってから最新値を組み合わせる |
順序合成
| API | 概要 |
|---|---|
| Zip | 各ソースの値をインデックス順に組み合わせる |
合流
| API | 概要 |
|---|---|
| Merge | 複数ソースの値をそのまま合流する |
連結
| API | 概要 |
|---|---|
| Concat | 複数ソースを順番に連結する |
競争
| API | 概要 |
|---|---|
| Race | 最も早く値を発行したソースのみ購読する |
使い分けガイド
任意のソースが発行するたびに最新値を組み合わせたい
→ CombineLatest
いずれかのソースが値を発行するたびに、すべてのソースの最新値を配列にまとめて発行します。UI バインディングなど、常に最新の状態を反映したい場合に適しています。
すべてのソースが新しい値を発行してから組み合わせたい
→ ZipLatest
すべてのソースが前回の発行以降に新しい値を出すまで待機します。各ソースの更新が揃ったタイミングで処理したい場合に使います。
各ソースの値をインデックス順にペアにしたい
→ Zip
1 番目の値同士、2 番目の値同士…のように順序でペアリングします。ソースの発行速度が異なっても、対応する位置の値が揃うまで待機します。
複数ソースの値を到着順にそのまま流したい
→ Merge
すべてのソースからの値を区別なくそのまま転送します。並行して動く複数のストリームを 1 つにまとめたい場合に使います。
複数ソースを順番に実行したい
→ Concat
前のソースが完了してから次のソースを購読します。順序を保証したい場合に使います。
最も早く値を出したソースだけを使いたい
→ Race
すべてのソースを同時に購読し、最初に値を発行したソースの勝ちとします。他のソースは即座に購読解除されます。フォールバックやタイムアウト競争に便利です。