对于我的 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/