【发布时间】:2017-02-21 15:59:25
【问题描述】:
我需要将随机生成器编写为可观察的。观察者会在很长一段时间内对下一个值做一些事情。因此,我只想在观察者需要时才发出新的随机数,或者可能是两个额外的数字,但仅此而已。
怎么做?
附:如果重要,我会使用 Java。
【问题讨论】:
我需要将随机生成器编写为可观察的。观察者会在很长一段时间内对下一个值做一些事情。因此,我只想在观察者需要时才发出新的随机数,或者可能是两个额外的数字,但仅此而已。
怎么做?
附:如果重要,我会使用 Java。
【问题讨论】:
当消费者有需求时,您可以使用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);
【讨论】:
使用鲜为人知的SyncOnSubscribe:
Observable
.create(SyncOnSubscribe.createStateless(observer -> observer.onNext(random.nextDouble))
.map(...)
.take(...)
.subscribe(...)
这将在背压下正常工作。
【讨论】:
Flowable.generate 或 Flowable.from...。