Rx Android并行地将多个调用组合到同一服务

Jos*_*hon 3 android rx-android rx-java2

我必须改进一个旧服务,即对同一服务进行多次连续调用,并将所有结果合并到一个列表中.

想象一下,我们有一个IDS = [1,2,3,... 6]的列表所以我必须使用每个ID调用相同的API(使用改进和Observables).

为此,我想使用Rx Android,但我对如何合并结果有疑问.

        Integer[] ids = {1, 2, 3};

        Observable.from(ids)
                .map(id -> mApi.getData(id))
Run Code Online (Sandbox Code Playgroud)

我们可以进行并行调用并按照相同的顺序合并结果吗?

为了改善时间响应,我们的想法是在并行中执行此操作,但我不知道如何确保结果将按照我们执行服务器调用的相同顺序进行组合.

我想使用concat(http://reactivex.io/documentation/operators/concat.html),但它等待以前的observable等待.

aka*_*okd 5

请参阅concatMapEager及其变体.

Observable.fromArray(1, 2, 3)
.concatMapEager(id -> 
    Observable.fromCallable(() -> mApi.getData(id))
    .subscribeOn(Schedulers.io())
)
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)