一、描述
使用Pattern和Plan作为中介,将两个或多个Observable发射的数据集合并到一起。
And/Then/When操作符组合的行为类似于zip,但是它们使用一个中间数据结构。接受两个或多个Observable,一次一个将它们的发射物合并到Pattern对象,然后操作那个Pattern对象,变换为一个Plan。随后将这些Plan变换为Observable的发射物。
它们属于rxjava-joins模块,不是核心RxJava包的一部分。
二、示意图
三、示例代码
由于start操作符是属于可选的rxjava-joins模块的,所以需要加入下面的依赖:
1 | compile 'io.reactivex:rxjava-joins:0.22.0' |
1 | Observable just1 = Observable.just("A", "B"); |
四、运行结果
1 | onNext: A1 |
and/then/when操作符实现的效果跟zip一样。相较之下,zip会更简单易用,但是如果是一些zip满足不了的场景,一些比较复杂的架构,就需要用and/then/when操作符来实现了。
项目代码已上传到Github:https://github.com/SherlockShi/RxJavaBestPractise
五、参考资料
PS:欢迎关注 SherlockShi 个人博客