繁体   English   中英

如何将多个请求与rxjava2正确组合?

[英]How to properly combine multiple requests with 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM