【问题标题】:Chaining Observable Subscriptions链接可观察订阅
【发布时间】:2010-03-02 14:27:37
【问题描述】:

有没有这个的简写版本。我想调用一个序列,然后在完成后调用另一个序列。

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

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

【问题讨论】:

  • 我在内部订阅中做了一些类似和预期的异常,直到我想出了这个:stackoverflow.com/questions/11769602/…。想知道你自己是否遇到过这样的问题,或者知道一种不同的、可能是内置的方法来阻止观察者异常一直冒泡到可观察对象。

标签: .net system.reactive


【解决方案1】:

我并不完全清楚您要做什么(而且我手头没有文档),但 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));

(我只是在检查这是否真的有效:)

【讨论】:

  • 因为他有 20 作为 seq1 的结尾和 21 作为 seq2 的开始,所以 Concat 是正确的。
  • 除了让 2 个 observables 一个接一个地执行之外,什么也不做。在这种情况下,这似乎可以满足我的要求,但是如果 2 个可观察对象的类型不同怎么办?
  • @kouPhax:我不完全确定你想如何使用它。你能举个例子说明你想要能写什么吗?
  • 老实说就是这样......而不是任何现实世界的场景,我正在编写一些小的 Linq 101 样式示例,并且想知道是否可以基于 OnComplete 触发链接 Observables。正如您所说,可能没有现实世界的应用程序,但这只是让我思考。感谢您的回复。
  • 将第一个异步结果的结果传递给第二个异步结果的两个异步 observable 怎么样。在这种情况下, concat 似乎没有帮助。 :-/
猜你喜欢
  • 1970-01-01
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
相关资源
最近更新 更多