2017-05-02 49 views
2

在RxJava中,我傾向於使用Observable.doOnSubscribe來記錄何時訂閱observable(知道何時創建\ fetch數據的工作正在發生),並發現在調用某些繁重工作時發現錯誤時很有用。是否有一個C#System.RxJava的doOnSubscribe的反應版本?

Do()運營商似乎提供doOnNext(), doOnError(), doOnCompleted() RxJava功能,但uniess我錯過了它,它似乎沒有提供類似於doOnSubscribe()功能。

我可以將日誌記錄添加到創建\獲取數據代碼,但通常這可能是一個Observable來源通過第三方庫,因此不方便與像RxJava的doOnSubscribe()這樣的操作符似乎。

我是否缺少doOnSubscribe()的C#版本,或者是否有替代方案可以解決我的需求?

回答

4

只需使用Observable.Defer()

var someObservable = ...; 
var newObservable = Observable.Defer(() => 
{ 
    Console.WriteLine("subscribed!"); 
    return someObservable; 
}); 

你可以讓自己的分機,如果你想:

public static IObservable<T> DoOnSubscribe(this IObservable<T> source, Action action) 
{ 
    return Observable.Defer(() => 
    { 
     action(); 
     return source; 
    }); 
} 
相關問題