是否有 RxJava 的 doOnSubscribe 的 C# System.Reactive 版本?

Jim*_*der 5 system.reactive

在 RxJava 中,我倾向于使用 Observable.doOnSubscribe 来记录订阅 observable 的时间(以了解何时发生一些创建\获取数据的工作),并发现在调用某些繁重工作时捕获错误很有用。

Do()操作似乎提供doOnNext(), doOnError(), doOnCompleted()RxJava功能然而uniess我失去了它,它似乎并没有提供类似的功能doOnSubscribe()

我可以将日志记录添加到 create\fetch 数据代码中,但是通常这可能是通过 3rd 方库获取的 Observable,因此与使用 RxJava 之类的运算符相比,doOnSubscribe()它看起来并不方便。

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

Bra*_*don 5

只需使用Observable.Defer()

var someObservable = ...;
var newObservable = Observable.Defer(() =>
{
    Console.WriteLine("subscribed!");
    return someObservable;
});
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您可以制作自己的扩展程序:

public static IObservable<T> DoOnSubscribe(this IObservable<T> source, Action action)
{
    return Observable.Defer(() =>
    {
        action();
        return source;
    });
}
Run Code Online (Sandbox Code Playgroud)