常用組合操作符
startWith、merge惩嘉、concat、zip文黎、combineLastest等
實(shí)例與功能介紹
1. startWith操作符
代碼實(shí)例
Observable observable = Observable.just(1,2,3);
observable = observable.startWith(4,5);
結(jié)果
結(jié)果: 4
結(jié)果: 5
結(jié)果: 1
結(jié)果: 2
結(jié)果: 3
結(jié)束
功能:在源Observable發(fā)送的數(shù)據(jù)前面插入一些數(shù)據(jù)。
2. merge操作符
代碼實(shí)例
Observable ob1 = Observable.just(1,2,3).subscribeOn(Schedulers.io());
Observable ob2 = Observable.just(4,5,6);
Observable observable = Observable.merge(ob1,ob2);
結(jié)果
結(jié)果: 4
結(jié)果: 5
結(jié)果: 6
結(jié)果: 1
結(jié)果: 2
結(jié)果: 3
結(jié)束
功能:將多個(gè)Observable合并到一個(gè)Observable中進(jìn)行發(fā)送桩蓉,
可能會(huì)讓合并的Observable發(fā)送的數(shù)據(jù)交錯(cuò)
。
3. concat操作符
代碼實(shí)例
Observable ob1 = Observable.just(1,2,3).subscribeOn(Schedulers.io());
Observable ob2 = Observable.just(4,5,6);
Observable observable = Observable.concat(ob1,ob2);
結(jié)果
結(jié)果: 1
結(jié)果: 2
結(jié)果: 3
結(jié)果: 4
結(jié)果: 5
結(jié)果: 6
結(jié)束
功能:將多個(gè)Observable合并到一個(gè)Observable中進(jìn)行發(fā)送院究,
但是會(huì)嚴(yán)格按照順序發(fā)送
本涕。
4. zip操作符
代碼實(shí)例
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;
}
});
結(jié)果
結(jié)果: x 4
結(jié)果: y 5
結(jié)果: z 6
結(jié)束
功能:合并兩個(gè)或多個(gè)Observable發(fā)送出的數(shù)據(jù)項(xiàng),根據(jù)指定函數(shù)變換他們菩颖,并且發(fā)送一個(gè)新的值。
5. combineLastest操作符
代碼實(shí)例
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;
}
});
結(jié)果
結(jié)果: z 4
結(jié)果: z 5
結(jié)果: z 6
結(jié)束
功能:第二項(xiàng)源Observable內(nèi)的所有數(shù)據(jù)項(xiàng)和第一項(xiàng)源Observable內(nèi)的最后一項(xiàng)數(shù)據(jù)根據(jù)指定函數(shù)變換氛濒,并且發(fā)送