1
AndroidでRxJavaを使用する方法を学んでいます。私のプロジェクトでは、サーバーからアイテムのList
を取得するという単一の状況があり、UIに応答を返す前に各アイテムの詳細を取得する必要があります。RxJava for-loop for async methoods?
問題は次のとおりです。sync
for loop
の内部で呼び出されるAPI呼び出しの仕組みがわかりません。 foor loop
のすべての呼び出しが完了した後にのみ、UIに最終結果を返します。
すべてのヒントはです。です。
サンプルコード:あなたはObservable
に加入されていないため、すべての
Observable<List<Favorite>> result = ApiWrapper.getFavorites(userData)
.flatMap(new Func1<List<Favorite>, Observable<List<Favorite>>>() {
@Override
public Observable<List<Favorite>> call(@NonNull final List<Favorite> response) {
for(int i = 0; i < response.size(); i++){
getDetailsForFavoriteItem(response.get(i));
}
return Observable.just(response);
}
});
private Observable<Favorite> getDetailsForFavoriteItem (Favorite item){
return ApiWrapper.getDetails(item.getId())
.flatMap(new Func1<FavoriteDetailsResponse, Observable<Favorite>>() {
@Override
public Observable<Favorite> call(@NonNull final FavoriteDetailsResponse response) {
item.setParam1(response.getParam1());
item.setParam2(response.getParam2);
//so on
return Observable.just(item)//!!!issue is here ! I want this return to be called only after all the details (in the for loop) have been called
}
});
}
私は2番目のスニペットで示されたアプローチを取り、提案をいただき、ありがとうございます。 – nightfixed