2016-12-10 22 views
1

Допустим, что у меня есть 'N' источников данных (REST API, например):Объединение нескольких наблюдаемых в RxJava

Observable<List<DataItem>> source1 = api.source1(); 
Observable<List<DataItem>> source2 = api.source2(); 
Observable<List<DataItem>> source3 = api.source3(); 
... 
Observable<List<DataItem>> sourcen = api.sourcen(); 

где 'п' относительно мала (~ 10)

То, что я хочу сделать это, чтобы взять все эти источники, запустить их параллельно и получить List<DataItem> list, содержащий все DataItems из всех наблюдаемых, но только после завершения каждого сетевого вызова.

Заранее спасибо

ответ

2

Можно сделать что-то вроде:

List<Observable<?>> obsList = Arrays.asList(source1, source2, source3, ...); 

Observable.zip(obsList, ... 
+0

Это работает, но это не параллельно ... – pawelo

+0

Предположение, что я видел, чтобы сделать это, чтобы использовать что-то вроде: ' Наблюдаемый <Список > source1 = api.source1(). SubscribeOn (Schedulers.newThread()); 'и т. Д. (Из http://stackoverflow.com/questions/38234152/how-can-i-make-this-rxjava- zip-to-run-in-parallel) –

+0

Работает как шарм. Благодаря! – pawelo

Смежные вопросы