2010-03-02 91 views
3

有没有这种速记版本。我想调用一个序列,然后在完成时调用另一个序列。Chaining Observable订阅

var seq1 = Observable.Range(1, 20); 
var seq2 = Observable.Range(21, 20); 

seq1.Subscribe(
    i => Console.WriteLine(i), 
    () => seq2.Subscribe(i => Console.WriteLine(i))); 
+0

我在做类似的东西,并预计将在内部认购例外咬我,直到我想出了这一点:http://stackoverflow.com /问题/ 11769602 /自误差依赖,自处置-的模式的​​IObservable的订阅/ 11770674#11770674。不知你自己是否有这样的问题,或者知道有一种不同的,也许是内置的方法来阻止观察者异常一直冒泡到观察者。 – 2012-08-02 05:50:09

回答

3

对我来说,你不是完全清楚你想要做什么(而且我没有文档)但是Observables.Concat你在做什么?

var seq1 = Observable.Range(1, 20); 
var seq2 = Observable.Range(21, 20); 
var both = seq1.Concat(seq2); 
both.Subscribe(i => Console.WriteLine(i)); 

(我只是检查了这一点实际工作:)

+0

由于他有20个seq1的结尾,21个seq​​2的开始,因此Concat是正确的。 – 2010-03-03 00:19:24

+0

不要试图做任何事情,而是让2个可观察对象一个接一个地执行。这似乎是做我想在这种情况下,但如果2可观察到哪里不同类型? – 2010-03-03 07:22:21

+0

@kouPhax:我不完全确定你会如何使用它。你能举一个你想要*能写的东西的例子吗? – 2010-03-03 09:02:37