使用.NET Reactive链接连续

新手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());
   });
}
点赞