惰性随机生成器作为可观察的

时间:2017-02-21 15:59:25

标签: rx-java reactivex

我需要将随机生成器编写为可观察的。观察者会在很长一段时间内对下一个值做一些事情。所以我只想在观察者想要的时候发出新的随机数,或者可能是两个额外的数字,但不会更多。

怎么做?

P.S。如果重要,我使用Java。

2 个答案:

答案 0 :(得分:3)

只要有消费者的要求,您就可以fromCallablerepeat一起使用来获取新值。

例如:

Random random = new Random();
Observable.fromCallable(() -> random.nextDouble())
.repeat()
.map(rnd -> {
    // do something with the random number
    return rnd * 2;
}
.take(50)
.subscribe(System.out::println);

答案 1 :(得分:1)

使用鲜为人知的SyncOnSubscribe

Observable
.create(SyncOnSubscribe.createStateless(observer -> observer.onNext(random.nextDouble))
.map(...)
.take(...)
.subscribe(...)

这将适用于背压。