我是 RXJava 的新手,我无法理解如何将 API 调用的结果链接在一起。
我正在使用改造进行两个 API 调用,A 和 B,它们都返回一个可观察的对象列表。两个 API 调用都是独立的,因此我想同时进行这两个调用,但为了实现最终结果,我需要首先获取 A 的结果,做一些工作,然后将其与 B 的结果结合起来以填充我的列表适配器。
这就是我在尝试使用 RX java 时迷失的地方。我可以获取 api 调用 A 的结果并完成我的工作
但我不确定如何获取刚刚生成的结果并将其与 API 调用 B 结合起来。
aService. getObjectAList(object_a.getID())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.main)
.subscribe(new Action1<List<Object_A>>() {
@Override
public void call(List<Section> sections) {
// Do Stuff Here...
// Now i need to take this result and combine it with API Call B...
}
});
我想同时进行两个 API 调用,但我不确定如何链接在一起并组合 API 调用。任何帮助都是值得赞赏的。
像这样的东西吗?
Observable
// make api call for A list and B list
.combineLatest(getObjectAList(), getObjectBList(), new Func2<List<Object_A>, List<Object_B>, Object>() {
@Override
public Object call(List<Object_A> o, List<Object_B> o2) {
// Do what you need to do in the background thread
List x = createX(o);
List y = createY(x, o2);
return y;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Object>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object y) {
// UI thread, do what you need e.g. renders the list
mAdapter.setList(y);
}
});
更换正确的类型应该会让您非常接近解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)