结合操作符
截图来自于https://mcxiaoke.gitbooks.io/...
startWith
startWith在数据序列的开头插入一条指定的项
Observable.just(1,2,3,4)
.startWith(0,0,0,0)
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
Log.i(TAG, "call: "+integer);
}
});
merge
merge合并多个Observables的发射物
使用Merge操作符你可以将多个Observables的输出合并,就好像它们是一个单个的Observable一样。
Merge可能会让合并的Observables发射的数据交错(有一个类似的操作符Concat不会让数据交错,它会按顺序一个接着一个发射多个Observables的发射物)。
Observable<Integer> observable = Observable.just(1, 1, 1);
Observable<Integer> observable1 = Observable.just(2, 2, 2);
Observable.merge(observable1,observable)
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
Log.i(TAG, "call: "+integer);
}
});
Concat
Concat不会让数据交错,它会按顺序一个接着一个发射多个Observables的发射物。
zip
[zip]()通过一个函数将多个Observables的发射物结合到一起,基于这个函数的结果为每个结合体发射单个数据项
Observable<Integer> observable1 = Observable.just(1, 2, 3, 4, 5);
Observable<Integer> observable2 = Observable.just(1, 1, 1, 1, 1, 1);
Observable.zip(observable1, observable2, new Func2<Integer, Integer, String>() {
@Override
public String call(Integer integer, Integer integer2) {
return integer+integer2+" hello zip";
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.i(TAG, "call: "+s);
}
});
在这里Func2的作用相当于为zip操作符提供提供算法,也就是你需要让zip怎么加工数据。
combineLatest
combineLatest当两个Observables中的任何一个发射了数据时,使用一个函数结合每个Observable发射的最近数据项,
并且基于这个函数的结果发射数据。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。