我是RX
Java的新手,我无法理解如何将API调用的结果链接在一起.
我正在使用改造A和B进行两次API调用,它们都返回一个可观察的对象列表.两个API调用都是独立的,所以我想同时制作两个,但要实现我的最终结果,我需要先取结果A,做一些工作,然后将其与B的结果结合起来填充我的列表适配器.
>进行API调用A.
>制作API调用B.
>获取A的结果并创建结果X.
>获取B X的结果并填充适配器
@GET("/{object_id}/object_a") Observable<List<Object_A>> getobjectAList( @Path("object_id") long object_id); @GET("/{object_id}/object_b") Observable<List<Object_B>> getobjectBList( @Path("object_id") long object_id);
这是我试图使用RX java迷路的地方.我可以把api的结果叫做A并做我的工作
但我不知道如何获取我刚刚生成的结果并将其与API Call 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... } });
解决方法
像这样的东西?
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); } });
注意更换合适的类型应该让你非常接近解决方案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。