在RxJava中,我倾向于在订阅可观测值时使用Observable.doOnSubscribe进行日志记录(了解创建\fetch数据的某些工作何时发生),并发现在调用某些繁重工作时发现错误是有用的。
Do()操作符似乎确实提供了doOnNext(), doOnError(), doOnCompleted() RxJava功能,尽管我忽略了它,但它似乎没有提供类似于doOnSubscribe()的功能。
我可以将日志添加到create\fetch数据代码中,但是这通常是通过第三方库获得的可观察到的源,因此与拥有一个操作符(如RxJava的doOnSubscribe() )不太方便。
我是错过了C#版本的doOnSubscribe(),还是有一种替代方案可以解决我的需求?
发布于 2017-05-02 19:13:40
只需使用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;
});
}https://stackoverflow.com/questions/43744969
复制相似问题