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