新手Rx问题.我想写一个像下面这样的方法:
public IObsevable<Unit> Save(object obj)
{
var saveFunc = Observable.FromAsyncPattern(...);
saveFunc(obj).Subscribe(result =>
{
Process(result);
return Observable.Return(new Unit());
});
}
基本思想是:保存给定对象,在“内部”延续中处理结果,然后允许调用者的“外部”延续执行.换句话说,我想将两个延续链接在一起,以便第二个延续直到第一个完成时才执行.
不幸的是,上面的代码不能编译,因为内部延续必须返回void而不是IObservable.另外,当然,从lambda返回一个可观察单元与从包含函数返回它是不一样的,这是我真正需要做的.如何重写此代码以便正确返回可观察单元?谢谢.
最佳答案 最简单的解决方案是使用SelectMany
public IObsevable<Unit> Save(object obj)
{
var saveFunc = Observable.FromAsyncPattern(...);
return saveFunc(obj).SelectMany(result =>
{
Process(result);
return Observable.Return(new Unit());
});
}