2016-04-10 8 views
1

異なるパラメータで複数の同じAPIリクエストをチェーンする方法を探しています。これまでのところ、私の方法は、次のようになります。Retrofit + RxJavaチェーンの複数のリクエストをチェーンして結果を集計する

@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データを合成することを期待しかし、私は最後のものだけを取得していた結果を呼び出します。しかし、logcatでは、APIへの呼び出しが正しく行われたことがわかります。

答えて

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> 
関連する問題