Empty
1. 概要
Empty は、値を一切発行せずに即座に正常完了する Observable を生成するファクトリメソッドです。
TimeProvider と TimeSpan を指定するオーバーロードを使うと、完了通知を非同期的に、または指定時間だけ遅延させることができます。
2. シグネチャ
即座に完了
csharp
public static Observable<T> Empty<T>()購読されると直ちに正常完了します。値は発行されません。
csharp
Observable.Empty<int>()TimeProvider 指定
csharp
public static Observable<T> Empty<T>(TimeProvider timeProvider)TimeProvider を使って非同期的に完了通知を送ります。
csharp
Observable.Empty<string>(TimeProvider.System)遅延付き
csharp
public static Observable<T> Empty<T>(TimeSpan dueTime, TimeProvider timeProvider)指定した時間が経過した後に完了通知を送ります。
csharp
Observable.Empty<int>(TimeSpan.FromSeconds(1), TimeProvider.System)オーバーロードの使い分け
| オーバーロード | 使う場面 |
|---|---|
Empty<T>() | 即座に空のシーケンスを返す |
Empty<T>(TimeProvider) | 非同期的に完了通知を送る |
Empty<T>(TimeSpan, TimeProvider) | 指定時間だけ遅延してから完了する |
3. マーブルダイアグラム
Empty は値を一切発行しません。購読後、即座に(または指定時間の経過後に)完了通知のみを送ります。
4. サンプルコード
csharp
using R3;
// 即座に完了する空の Observable
Observable.Empty<int>()
.Subscribe(
x => Console.WriteLine($"値: {x}"), // 呼ばれない
r => Console.WriteLine($"完了: {r}"));
// 出力: 完了: Success
// 遅延付き: 1 秒後に完了
Observable.Empty<string>(TimeSpan.FromSeconds(1), TimeProvider.System)
.Subscribe(
x => Console.WriteLine($"値: {x}"), // 呼ばれない
r => Console.WriteLine($"完了: {r}"));
// 出力(1 秒後): 完了: Success
// Concat と組み合わせてデフォルトのフォールバック
var source = Observable.Empty<int>();
Observable.Concat(source, Observable.Return(0))
.Subscribe(x => Console.WriteLine($"値: {x}"));
// 出力: 値: 05. 補足
関連 API
- Never — 値を発行せず、完了もしない(無限に待機)
- Throw — 値を発行せず、エラーで完了する
- ReturnOnCompleted — 値を発行せず、指定した
Result(成功またはエラー)で完了する