简体   繁体   中英

Identify emitting observable in RxJava

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?

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"));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM