Skip to content

合成(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
すべてのソースを同時に購読し、最初に値を発行したソースの勝ちとします。他のソースは即座に購読解除されます。フォールバックやタイムアウト競争に便利です。