0
我的任務是在Producer中產生一定數量的隨機對象(形狀 - 圓形或正方形),將它們打印到控制檯並在消費者中使用它們。爲了生成隨機對象,我使用抽象類Shape
中的方法getShape
,然後在創建Observable時使用defer()
來獲取每個新對象。RxJava:正確地返回來自Observable的隨機對象
對於印刷對象我試圖用doOnNext
:
Observable<Shape> produceShapes(int amount) {
System.out.println("Produced following shapes:");
return Observable.defer(() -> Observable.just(Shape.getShape()))
.doOnNext(System.out::print)
.repeat(amount);
}
消費者的方法是平時Observable.just(new Producer().produceShapes(10))...
的問題是,defer()
作品兩次 - 在打印過程中的形狀和而深受消費者要求他們,使消費者成爲不同的形狀。
編輯:我試圖刪除.doOnNext(System.out::print)
並打印getShape()
方法中的對象,然後將其提供給生產者,但消費者仍然變成不同的形狀。
如何解決?我如何創建形狀,打印它們並向消費者提供相同的形狀?
會發生什麼事,如果你刪除延遲通話?重複剛纔的呼叫還是隻呼叫一次? – rob
它會重複。形狀對象將只創建一次,並在每次調用時返回。 –
這就是我的想法: - 幸運的是koperko更瞭解他的rxjava :-) – rob