java - Rxjava Android如何使用Zip运算符

标签 java android rx-java

对于我的 android 项目,我在理解 RxJava 中的 zip 运算符时遇到了很多麻烦。 问题 我需要能够发送网络请求以上传视频 然后我需要发送一个网络请求来上传一张图片来配合它 最后我需要添加描述并使用前两个请求的响应将视频和图片的位置 URL 连同描述一起上传到我的服务器。

我认为 zip 运算符非常适合这项任务,因为我知道我们可以获取两个可观察对象(视频和图片请求)的响应并将它们用于我的最终任务。 但我似乎无法按照我的设想实现这一点。

我正在寻找某人来回答如何使用一些伪代码在概念上完成此操作。 谢谢

最佳答案

Zip 运算符严格配对来自可观察对象的发射项目。它等待两个(或更多)项目到达然后合并它们。所以是的,这将适合您的需求。

我会使用 Func2 将前两个 observable 的结果链接起来。 请注意,如果您使用 Retrofit,这种方法会更简单,因为它的 api 接口(interface)可能会返回一个 observable。否则,您将需要创建自己的 observable。

// assuming each observable returns response in the form of String
Observable<String> movOb = Observable.create(...);
// if you use Retrofit
Observable<String> picOb = RetrofitApiManager.getService().uploadPic(...),
Observable.zip(movOb, picOb, new Func2<String, String, MyResult>() {
      @Override
      public MyResult call(String movieUploadResponse, String picUploadResponse) {
          // analyze both responses, upload them to another server
          // and return this method with a MyResult type
          return myResult;
      }
   }
)
// continue chaining this observable with subscriber
// or use it for something else

关于java - Rxjava Android如何使用Zip运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30219877/

相关文章:

java - 在 Spring java 配置中启用 CrudRepository

java - 一个国家的可点击浮雕(图片)

java - 错误 token 异常 : Unable to add window

java - RxJava并行计算

java - 如何正确理解RxJava的groupBy行为?

java - 为什么我在Prometheus仪表盘上看不到Flink指标?

Java - 二维数组 - 不能使用增强循环?

java - 通过栈计算负数算术表达式

android - 如何在 Android 中重定向 YouTube?

java - RxJava : observable that contains an asynchronous call