一、描述
通过一个函数将多个Observables的发射物结合到一起,基于这个函数的结果为每个结合体发射单个数据项。
Zip操作符返回一个Obversable,它使用这个函数按顺序结合两个或多个Observables发射的数据项,然后它发射这个函数返回的结果。它按照严格的顺序应用这个函数。它只发射与发射数据项最少的那个Observable一样多的数据。
RxJava将这个操作符实现为zip和zipWith。
zip的最后一个参数接受每个Observable发射的一项数据,返回被压缩后的数据,它可以接受一到九个参数:一个Observable序列,或者一些发射Observable的Observables。
二、示意图
三、示例代码
1 | Observable just11 = Observable.just("A", "B"); |
四、运行结果
1 | onNext: A1 |
项目代码已上传到Github:https://github.com/SherlockShi/RxJavaBestPractise
五、更多
zip操作符还有以下变体:
- zip(Iterable,FuncN)
- zip(Observable,FuncN)
- zip(Observable,Observable,Func2)(最多可以有九个Observables参数)
跟zip相关的操作符还有:
- zipWith(Observable,Func2)
- zipWith(Iterable,Func2)
详情可查阅下面的参考资料。
六、参考资料
PS:欢迎关注 SherlockShi 个人博客