常用组合操作符
startWith、merge、concat、zip、combineLastest等
实例与功能介绍
1. startWith操作符
代码实例
Observable observable = Observable.just(1,2,3);
observable = observable.startWith(4,5);
结果
结果: 4
结果: 5
结果: 1
结果: 2
结果: 3
结束
功能:在源Observable发送的数据前面插入一些数据。
2. merge操作符
代码实例
Observable ob1 = Observable.just(1,2,3).subscribeOn(Schedulers.io());
Observable ob2 = Observable.just(4,5,6);
Observable observable = Observable.merge(ob1,ob2);
结果
结果: 4
结果: 5
结果: 6
结果: 1
结果: 2
结果: 3
结束
功能:将多个Observable合并到一个Observable中进行发送,
可能会让合并的Observable发送的数据交错
。
3. concat操作符
代码实例
Observable ob1 = Observable.just(1,2,3).subscribeOn(Schedulers.io());
Observable ob2 = Observable.just(4,5,6);
Observable observable = Observable.concat(ob1,ob2);
结果
结果: 1
结果: 2
结果: 3
结果: 4
结果: 5
结果: 6
结束
功能:将多个Observable合并到一个Observable中进行发送,
但是会严格按照顺序发送
。
4. zip操作符
代码实例
Observable ob1 = Observable.just("x","y","z").subscribeOn(Schedulers.io());
Observable ob2 = Observable.just(4,5,6);
Observable observable = Observable.zip(ob1, ob2, new Func2<String,Integer,String>() {
@Override
public String call(String string, Integer integer) {
return string+" "+integer;
}
});
结果
结果: x 4
结果: y 5
结果: z 6
结束
功能:合并两个或多个Observable发送出的数据项,根据指定函数变换他们,并且发送一个新的值。
5. combineLastest操作符
代码实例
Observable ob1 = Observable.just("x","y","z");
Observable ob2 = Observable.just(4,5,6);
Observable observable = Observable.combineLatest(ob1, ob2, new Func2<String,Integer,String>() {
@Override
public String call(String string, Integer integer) {
return string+" "+integer;
}
});
结果
结果: z 4
结果: z 5
结果: z 6
结束
功能:第二项源Observable内的所有数据项和第一项源Observable内的最后一项数据根据指定函数变换,并且发送