1
我正在學習在Android上使用RxJava。在我的項目中,我遇到了一種情況,從服務器獲取List
個項目,並且我需要獲取每個項目的詳細信息,然後纔將響應返回給UI。RxJava for循環與異步方法?
問題是:我不知道如何sync
在for loop
內調用的API調用。我只想在foor loop
中的所有調用完成後纔將最終結果返回到UI。
任何提示是高度讚賞。
示例代碼:
所有的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
}
});
}
謝謝你的建議,我把第二片段指示的方法。 – nightfixed