区别
concat:组合多个被观察者一起发送数据,合并后按顺序串行执行
merge:组合多个被观察者一起发送数据,合并后按时间线并行执行
concat(合并)
使用一个发射器把两个发射器连接成一个发射器
concat() / concatArray()的区别:
concat()组合被观察者数量<=4,concatArray()组合被观察者>4
concat和merge的简单使用:
执行结果:
由rxJavaConcat()和rxJavaMerge()的执行结果来看,concat和merge这两个操作符是很相似的,并不能体现出两者的差异。我们上面说了merge是合并后按照时间线并行执行的,那我们就通过下面的示例,看看按照时间线并行执行的效果。
inervalRange(long start, long count, long initialDelay, long period, TimeUnit unit)参数含义:第一个参数从0开始,第二个参数输出6个数据,第三个参数延时1s执行,第四个参数延时时间间隔为1s
concat的执行结果:
merge的执行结果:
从执行结果可以看出,concat执行跟延时操作并无关系,不管延时多久都是按照传入concat Observable的顺序一个个执行的。但是merge很明显不是串行而是根据时间线并行执行。
zip
合并之后并行执行,发射事件和最少的一个相同
执行结果: