1、简介:
之前几篇讲解的操作符多是单个被观察者对象发送事件,本篇来介绍下组合操作符的使用,组合操作符的作用:
组合 多个被观察者(Observable) & 合并需要发送的事件
2、类型:
3、操作符介绍
- concat() / concatArray():
- 作用:合并多个被观察者 ,发送的顺序与产生的顺序相同(串行发送)
- 二者联系:concat 使用时最多只能发送4个被观察者对象,concatArray可发送大于4个
- 使用场景:多个被观察者发送事件
- 使用实例:
Observable.concatArray(
Observable.just("1"),
Observable.just("2", "3"),
Observable.just("4", "5", "6"),
Observable.just("7", "8", "9","10"),
Observable.just("A", "B", "C")
).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.e("concat=====", s);
}
});
输出的结果
05-03 20:04:52.379 6302-6302/? E/concat=====: 1
05-03 20:04:52.379 6302-6302/? E/concat=====: 2
05-03 20:04:52.379 6302-6302/? E/concat=====: 3
05-03 20:04:52.379 6302-6302/? E/concat=====: 4
05-03 20:04:52.379 6302-6302/? E/concat=====: 5
05-03 20:04:52.379 6302-6302/? E/concat=====: 6
05-03 20:04:52.379 6302-6302/? E/concat=====: 7
05-03 20:04:52.379 6302-6302/? E/concat=====: 8
05-03 20:04:52.379 6302-6302/? E/concat=====: 9
05-03 20:04:52.379 6302-6302/? E/concat=====: 10
05-03 20:04:52.379 6302-6302/? E/concat=====: A
05-03 20:04:52.379 6302-6302/? E/concat=====: B
05-03 20:04:52.379 6302-6302/? E/concat=====: C
- merge() / mergeArray()
- 作用:合并多个被观察者(并行发送)
- 二者联系:merge使用时最多只能发送4个被观察者对象,mergeArray可发送大于4个
- 使用场景:并行发送多个被观察者发送事件
- 使用实例:
Observable.mergeArray(
Observable.intervalRange(2,3,1000,1000, TimeUnit.MILLISECONDS),
Observable.intervalRange(5,3,1000,1000, TimeUnit.MILLISECONDS),
Observable.intervalRange(8,3,1000,1000, TimeUnit.MILLISECONDS)
).subscribe(new Consumer<Long>() {
@Override
public void accept(Long s) throws Exception {
Log.e("concat=====", s+"");
}
});
输出结果:
05-03 20:14:55.558 6948-6974/? E/concat=====: 2
05-03 20:14:55.560 6948-6976/? E/concat=====: 8
05-03 20:14:55.562 6948-6975/? E/concat=====: 5
05-03 20:14:56.558 6948-6974/? E/concat=====: 3
05-03 20:14:56.559 6948-6975/? E/concat=====: 6
05-03 20:14:56.560 6948-6976/? E/concat=====: 9
05-03 20:14:57.558 6948-6974/? E/concat=====: 4
05-03 20:14: