Определить излучающий наблюдаемый в RxJava

Oct 01 2020

У меня есть массив Observable, каждый из которых потенциально производит одни и те же элементы. Затем я использую flatMap()для слияния всех наблюдаемых и подписываюсь на полученный 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: ???"));

Как мне нужно изменить код, чтобы я мог определить, какой Observable выдал каждый элемент в subscribe()предложении?

Ответы

1 LLawliet Oct 01 2020 at 17:30

Как насчет:

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