用两个动作连接两个可观察对象

时间:2011-11-23 13:43:03

标签: .net system.reactive

我对rx很新,所以问题不断出现:)

我有两个可观察的序列,首先我想运行一个完成,然后开始订阅另一个(它们都很冷)。我相信Concat()会这样做(如果我错了请纠正我。)

但是,如果我想在第一次完成之后做一些“某事”,在另一次开始之前做什么 - 比如说将某些内容记录到控制台?

我的代码非常简单:

var subject = new ReplaySubject<IResponse>();
observable1
    .Concat(observable2)
    .Subscribe(
        subject.OnNext,
        () =>
        {
            subject.OnCompleted();
        });

我能这样做吗?

1 个答案:

答案 0 :(得分:4)

Do运算符非常适合日志记录,并且具有与Subscribe运算符相同的方法签名,因此您可以执行OnNext,OnError和OnComplete操作。

  var observable1 = Observable.Range(0,10);
  var observable2 = Observable.Range(10, 10);

  observable1.Do(_ => { }, 
         () => Console.WriteLine("Log First Sequence Complete"))
     .Concat(observable2)
     .Subscribe(i => Console.WriteLine("On Next Value {0}", i),
         () => Console.WriteLine("Log Both Sequences Complete"));