结合操作符

截图来自于https://mcxiaoke.gitbooks.io/...
图片描述

startWith

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
使用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的发射物结合到一起,基于这个函数的结果为每个结合体发射单个数据项
zip

 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发射的最近数据项,
并且基于这个函数的结果发射数据。

combineLatest

join


Magicer
246 声望11 粉丝

[链接]