新手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返回一个可观察单元与从包含函数返回它是不一样的,这是我真正需要做的。如何重写此代码以便正确返回可观察单元?感谢。
答案 0 :(得分:2)
最简单的解决方案是使用SelectMany
public IObsevable<Unit> Save(object obj)
{
var saveFunc = Observable.FromAsyncPattern(...);
return saveFunc(obj).SelectMany(result =>
{
Process(result);
return Observable.Return(new Unit());
});
}