在 RxJava 中,我倾向于使用 Observable.doOnSubscribe 来记录订阅 observable 的时间(以了解何时发生一些创建\获取数据的工作),并发现在调用某些繁重工作时捕获错误很有用。
该Do()操作似乎提供doOnNext(), doOnError(), doOnCompleted()RxJava功能然而uniess我失去了它,它似乎并没有提供类似的功能doOnSubscribe()。
我可以将日志记录添加到 create\fetch 数据代码中,但是通常这可能是通过 3rd 方库获取的 Observable,因此与使用 RxJava 之类的运算符相比,doOnSubscribe()它看起来并不方便。
我是否缺少 C# 版本,doOnSubscribe()或者是否有替代方案可以解决我的需求?
只需使用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)
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |