我需要将随机生成器编写为可观察的。观察者会在很长一段时间内对下一个值做一些事情。所以我只想在观察者想要的时候发出新的随机数,或者可能是两个额外的数字,但不会更多。
怎么做?
P.S。如果重要,我使用Java。
答案 0 :(得分:3)
只要有消费者的要求,您就可以fromCallable
与repeat
一起使用来获取新值。
例如:
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(...)
这将适用于背压。