在RxJava中组合多个observable

时间:2016-12-10 12:45:18

标签: android retrofit rx-java retrofit2

我们说我有' n'数据源(例如REST API):

let data = [{ a: 3, b: 2, c: 5, d: 6, e: 8 }, { a: 1, b: 5, c: 3, d: 1, e: 2 }],
    result = [].concat.apply([], data.map(i => [i.a, i.b, i.c, i.d]));

console.log(result);

其中' n'相对较小(~10)

我想要做的是获取所有这些源,并行运行它们并接收包含所有可观察数据的所有DataItem的Observable<List<DataItem>> source1 = api.source1(); Observable<List<DataItem>> source2 = api.source2(); Observable<List<DataItem>> source3 = api.source3(); ... Observable<List<DataItem>> sourcen = api.sourcen(); ,但仅限于每次网络调用完成时。

提前致谢

1 个答案:

答案 0 :(得分:2)

可以做类似的事情:

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

Observable.zip(obsList, ...