2017-02-21 55 views
0

私はランダムジェネレータを観測可能なように書く必要があります。オブザーバーは次の価値を持って何かを長時間するでしょう。だから私はオブザーバーがそれを望んでいるときだけ新しい乱数を出したいと思います。観測可能なレイジーランダムジェネレータ

どうすればよいですか?

P.S.それが問題なら、私はJavaを使います。

答えて

2

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

利用あまり知られてSyncOnSubscribe

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

これは、背圧で正しく動作します。

関連する問題