4

新手 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 返回一个 observable Unit 与从包含函数返回它不同,这是我真正需要做的。如何重写此代码以使其正确返回可观察单元?谢谢。

4

1 回答 1

2

最简单的解决方案是使用 SelectMany

public IObsevable<Unit> Save(object obj)
{
   var saveFunc = Observable.FromAsyncPattern(...);
   return saveFunc(obj).SelectMany(result =>
   {
      Process(result);
      return Observable.Return(new Unit());
   });
}
于 2011-01-21T15:51:21.533 回答