我对rx很新,所以问题不断出现:)
我有两个可观察的序列,首先我想运行一个完成,然后开始订阅另一个(它们都很冷)。我相信Concat()会这样做(如果我错了请纠正我。)
但是,如果我想在第一次完成之后做一些“某事”,在另一次开始之前做什么 - 比如说将某些内容记录到控制台?
我的代码非常简单:
var subject = new ReplaySubject<IResponse>();
observable1
.Concat(observable2)
.Subscribe(
subject.OnNext,
() =>
{
subject.OnCompleted();
});
我能这样做吗?
答案 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"));