可观察的超时

时间:2016-11-07 01:25:44

标签: java multithreading timeout rx-java

假设我有以下内容。

Observable.range(1,1000)
.flatMap(i -> Observable.just(i)
    .subscribeOn(Schedulers.computation()
    .map(i2 -> calculate(i2))
).subscribe(System.out::println)

在这里我有一个从1到1000的observable,并且每个数字都是使用不同线程中的calculate()(一个大方法)映射的。我需要设置一个超时,直到返回一定数量的项目。

    假设我超时2秒。
    我需要订阅2-50件物品(至少2件物品应订阅但不超过50件物品)
    如果2秒内没有发出2项,则重启超时。
    假设在超时内返回了10个项目。然后没有问题执行剩下的代码。

如何使用Rx Java执行此操作?

1 个答案:

答案 0 :(得分:0)

这可以使用rx-java中的buffer()而不是使用timeout()

来实现