Retrofit + RxJava链接多个请求并聚合结果

时间:2016-04-10 14:18:12

标签: android retrofit rx-java retrofit2 rx-android

我正在寻找如何使用不同参数链接多个但相同的API请求的方法。到目前为止,我的方法看起来像这样:

@Override
public Observable<List<Entity>> getResult(Integer from, Integer to, Integer limit) {
    MyService myService = restClient.getMyService();
    if (null != from && null != to) {
        Observable<List<Response>> responseObservable = myService.get(from, limit);
        for (int i = from + 1; i <= to; i++) {
            responseObservable = Observable.concat(responseObservable, myService.get(i, limit));
        }

        return responseObservable.map(mapResponseToEntity);
    } else {
        int fromParameter = null == from ? DEFAULT_FROM : from;
        return myService.get(fromParameter, limit).map(mapResponseToEntity);
    }
}

我希望concat方法将Oservables数据合并到一个流中并返回组合的Observable,但我只得到最后一个调用结果。但是,在logcat中我可以看到对API的正确调用次数。

1 个答案:

答案 0 :(得分:1)

尝试使用Observable.merge()Observable.toList(),如下所示:

List<Observable<Response>> observables = new ArrayList();

// add observables to the list here...

Subscription subscription = Observable.merge(observables)
        .toList()
        .single()
        .subscribe(...); // subscribe to List<Response>