【发布时间】:2014-11-02 01:27:20
【问题描述】:
帮助编写多个网络调用并在 Rxjava 中累积结果。 (我在 Android 应用程序中使用。)
State
-- List<City> cityList;
City
- cityId;
RestCall 1
Observable<State> stateRequest = restService.getStates();
RestCall 2
Observable<CityDetail> cityRequest = restService.getCityDetail(cityId);
在 UI 中,我必须在获取每个城市的所有详细信息后显示城市列表,然后在列表视图中显示。 我如何实现并行网络调用并累积结果。 ?
我希望将所有城市详细信息结果放入源状态“对象”的列表中。由于状态对象也有一些需要显示的信息。这可能吗?
stateRequest ???
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<State>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(State result) {
// Get city list and display
}
});
我查看了这个示例,该示例显示了我们如何压缩多个可观察到的响应。下面 sn-p 显示了 3 个可观察的组合。 但在我的情况下,我必须并行或顺序进行 20 个网络调用(我的意思是在后台但一个接一个)。我如何做到这一点。有什么帮助或指示吗?
https://gist.github.com/skehlet/9418379
Observable.zip(f3Observable, f4Observable, f5Observable, new Func3<String, Integer, Integer, Map<String, String>>() {
@Override
public Map<String, String> call(String s, Integer integer, Integer integer2) {
Map<String, String> map = new HashMap<String, String>();
map.put("f3", s);
map.put("f4", String.valueOf(integer));
map.put("f5", String.valueOf(integer2));
return map;
}
【问题讨论】:
标签: android system.reactive rx-java