首页 / JAVA / 如何使用RxJava重复网络通话
如何使用RxJava重复网络通话
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用RxJava重复网络通话,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1571字,纯文字阅读大概需要3分钟。
内容图文
![如何使用RxJava重复网络通话](/upload/InfoBanner/zyjiaocheng/684/2888ea2cb10b4d3dbbc090592ca0e32d.jpg)
我有一个API,可让我使用如下所示的ID来检索商品:
http://myapi.com/api/v1/item/1
最后一个值是项目的ID.很好,很花哨,我可以编写一个Retrofit服务接口,并调用如下所示的项:
MyService service = MyService.retrofit.create(MyService.class);
service.itemById(1)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<Item>() {
@Override
public void onCompleted() {
}
@Override
public void one rror(Throwable e) {
Log.v(LOG_TAG, e.getMessage());
}
@Override
public void onNext(Item item) {
adapter.addItem(item);
}
});
我遇到的问题是我想一次检索5个项目,但是我不知道该怎么做.例如,如果我想获取ID为1、2、3、4、5的物品,我该如何在一组中做到这一点?我已经研究了Observable.zip(),但是我不太清楚如何设置它.
解决方法:
如果要使用zip,则需要执行以下操作(为简洁起见,使用lambda语法):
Observable.zip(
service.itemById(1),
service.itemById(2),
service.itemById(3),
service.itemById(4),
service.itemById(5),
(i1, i2, i3, i4, i5) -> new Tuple<>(i1, i2, i3, i4, i5))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(
tuple -> {
// < use the tuple >
},
error -> {
// ...
}
);
注意:您必须创建一个Tuple类或其他对象,或者导入一个Tuple库.
根据您的评论的另一种变化:
Observable.range(1, 5)
.flatMap(t -> service.itemById(t), (i, response) -> new Tuple<>(i, response))
.subscribeOn(Schedulers.io())
.subscribe...
这将并行运行您的请求,并且您的订阅块将分别接收每个元素.
Observable.range(1, 5)
.flatMap(t -> service.itemById(t), (i, response) -> new Tuple<>(i, response))
.collect(ArrayList::new, ArrayList::add)
.subscribeOn(Schedulers.io())
.subscribe...
这将把结果元组收集到一个数组中.
内容总结
以上是互联网集市为您收集整理的如何使用RxJava重复网络通话全部内容,希望文章能够帮你解决如何使用RxJava重复网络通话所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。