累积来自不同Streams的Observable进行投票

时间:2014-03-24 18:54:28

标签: java system.reactive reactive-programming rx-java

我正在尝试从服务器调用中累积Observable,然后对它们进行平面映射并进行另一次服务器调用。

private Observable poll(Observable<TaskStatus> taskObservable) {
     Observable.add(taskObservable) //Pseudocode
    .buffer(3 sec) 
    .flatMap(...)
    ...
}

如何实现Observable积累(“添加”)?

3 个答案:

答案 0 :(得分:1)

您可能正在寻找 merge()运算符。

有关组合Observable的更多信息,请参阅:https://github.com/Netflix/RxJava/wiki/Combining-Observables

答案 1 :(得分:0)

为了积累,我认为你可能会追随Rx.NET中的 CompositeDisposable 之类的东西。

示例Rx.NET用法:http://rxwiki.wikidot.com/disposables#toc2

Rx.NET类的文档:http://msdn.microsoft.com/en-us/library/system.reactive.disposables.compositedisposable(v=vs.103).aspx

我相信Rx Java等价物是 CompositeSubscription 类。

见这里:http://netflix.github.io/RxJava/javadoc/rx/subscriptions/CompositeSubscription.html

答案 2 :(得分:0)

您应该使用window运算符(查看更多信息here,搜索包含window(source, timespan, unit)的版本。)

您的代码应该是这样的:

Observable.window(3, TimeUnit.SECONDS).flatmap(...)