java - 如何将多个请求与 rxjava2 正确组合?
问题描述
rxjava2 是否有可能实现下面描述的序列?我有这样的课程:
class Holder {
List<Image> images;
}
class Image {
String url;
String localFileUrl;
}
我需要一个像这样的序列:
* Iterate over Holders;
* For each Holder iterate over Images;
* Working with each images(decode Bitmap from localFileUrl and upload
bitmap to network -> get url for image from network -> write url to
Image's file url);
* After iterating over all Holders(on this step all images inside Holders
should have filled url), make upload for Holders;
我试过类似的东西:
Observable.fromIterable(holders)
.concatMap(holder -> {
Observable.fromIterable(holder.images)
.concatMap(image -> {
// decode bitmap here
uploadImage(bitmap)
})
})
// what should I do here to get observable which emits holders,
// not result from uploadImage(bitmap)?
.toList()
.flatMap(? -> uploadeHolders());
是否可以迭代数据,对数据的每个项目执行一些操作,并对准备好的数据做一些工作(对每个项目执行操作)?
解决方案
类似的东西——
Observable.fromIterable(holders)
.concatMap(holder -> {
Observable.fromIterable(holder.images)
.flatMap(image -> {
// decode bitmap here
uploadImage(bitmap)
.map(url -> {
image.url = url;
return image;
});
})
.toList()
.map(list -> {
holder.images = list;
return holder;
});
})
.toList(); // optional, if you need holders as a list
推荐阅读
- python - 通过激活按钮更改标签上的文本
- scala - MultiMap 的非法继承
- python - 值更改时Opencv重绘图像
- ms-access - 参数值的查询提示
- java - 在调试器中运行时抛出 ConcurrentModificationException
- verilog - 如何在verilog中进行串行BCD码输入
- elasticsearch - kibana 中默认的模糊搜索
- android - 如何根据 ID 限制对数据库的访问
- advanced-custom-fields - 通过 WP API 更新布局内的 ACF 字段
- azure-devops - vsts——产品板上的努力下拉值