英文:
Identify emitting observable in RxJava
问题
我有一个Observable数组,每个Observable可能会产生相同的元素。然后,我使用flatMap()
来合并所有的Observables,并订阅结果Observable:
Observable<Integer> o1 = Observable.range(0, 5);
Observable<Integer> o2 = Observable.range(0, 5);
Observable<Integer> o3 = Observable.range(0, 5);
Observable.fromArray(o1, o2, o3)
.flatMap(o -> o) // 合并所有Observables的输出
.subscribe(item -> Log.i(TAG, "Item: " + item + " Observable id: ???"));
我需要如何更改代码,以便在subscribe()
语句中确定哪个Observable发出了每个项目?
英文:
I have an array of Observable, each potentially producing the same elements. Then, I use flatMap()
to merge all of the observables, and subscribe to the resulting Observable:
Observable<Integer> o1 = Observable.range(0, 5);
Observable<Integer> o2 = Observable.range(0, 5);
Observable<Integer> o3 = Observable.range(0, 5);
Observable.fromArray(o1, o2, o3)
.flatMap(o -> o) // merge outputs from all observables
.subscribe(item -> Log.i(TAG, "Item: " + item + " Observable id: ???"));
How do I need to change the code so I can determine which Observable emitted each item in the subscribe()
clause?
答案1
得分: 1
Observable<Item> o1 = Observable.range(0, 5).map(i -> new Item(i, "o1"));
Observable<Item> o2 = Observable.range(0, 5).map(i -> new Item(i, "o2"));
Observable<Item> o3 = Observable.range(0, 5).map(i -> new Item(i, "o3"));
英文:
How about:
Observable<Item> o1 = Observable.range(0, 5).map(i -> new Item(i, "o1"));
Observable<Item> o2 = Observable.range(0, 5).map(i -> new Item(i, "o2"));
Observable<Item> o3 = Observable.range(0, 5).map(i -> new Item(i, "o3"));
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论