Rxjava從使用到原碼的解析三: Rxjava創建型操作符

Rxjava創建型操作符主要有以下幾種

create

just

formArray

empty

range

是用來創建Observable(被觀察者)的

 

just操作符的使用

       Observable.just("A","B")//內部會先發送A再發送B
                .subscribe(new Observer<String>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        
                    }

                    @Override
                    public void onNext(String s) {
                        Log.e(TAG,s);
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

先會輸出A 再輸出B 自動發送事件

 

fromArray操作符使用

        String[] strings = new String[]{"a","b","c"};
        Observable.fromArray(strings)
                .subscribe(new Observer<String>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        
                    }

                    @Override
                    public void onNext(String s) {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

最後會輸了a b c 有些人用來做數據的遍歷

 

empty操作符

        Observable.empty()//內部一定會調用onComplete
                //上游無法指定類型,這裏只能是object
                .subscribe(new Observer<Object>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        
                    }

                    @Override
                    public void onNext(Object o) {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {
                        Log.e(TAG,"只有這裏能接收");
                    }
                });

        //簡化版本
        Observable.empty()
                .subscribe(new Consumer<Object>() {
                    @Override
                    public void accept(Object o) throws Exception {
                        Log.e(TAG,"這裏是接收不到的");
                    }
                });

只會發送onCompelete事件,只有下游的onCompelete才能接收

 

range操作符

        Observable.range(4, 5)
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Integer integer) {
                        Log.e(TAG, integer + "這裏會執行上面傳的5次")
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

相當於

for (int i = 4; i < 9; i++) {
    
}

Rxjava理解一

Rxjava理解二

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章