从较短的可观察者创建一个长期运行的观察者?

时间:2016-01-14 15:36:08

标签: c# system.reactive

我有一个方法返回一个返回1或2个项目的short observable,然后完成。

我希望有一个可以继续运行的observable,当我调用一个方法时,会创建short observable并将其合并到运行时间更长的observable中。

有没有办法用可观察的运算符执行此操作?或者我应该只使用主题吗?

1 个答案:

答案 0 :(得分:3)

当你提出问题时,没有办法使用主题,特别是因为你需要一个方法调用来触发现有流上的事件。

但是你可以将主题的使用限制在最低限度,这就是这个方法调用:

Subject<Unit> trigger;

void RefreshMethod() { trigger.OnNext(Unit.Default); }

IObservable<Item> GetLongObservable() {
    return trigger.SelectMany(_ => GetShortObservable());
}

理想情况下,根据调用RefreshMethod的位置,您可以尝试进一步传播Rx的使用,并通过其后面的实际事件替换主题。