5. Rxjava2 : 判斷操作符

1. RxJava2 : 什么是觀察者模式
2. RxJava2 : 創(chuàng)建操作符(無關(guān)時(shí)間)
3. Rxjava2 : 創(chuàng)建操作符(有關(guān)時(shí)間)
4. Rxjava2 : 變換操作符
5. Rxjava2 : 判斷操作符
6. Rxjava2 : 篩選操作符
7. Rxjava2 : 合并操作符
8. Rxjava2 : do操作符
9. Rxjava2 : error處理
10. Rxjava2 : 重試
11. Rxjava2 : 線程切換

api use
all {{Observable.all}}
contains {{Observable.contains}}
isEmpty {{Observable.isEmpty}}
defaultIfEmpty {{Observable.defaultIfEmpty}}
takeWhile / takeUntil {{Observable.takeWhile}}

all

  • 判斷是否全部滿足,只有全部滿足的時(shí)候才會(huì)返回 true
Disposable subscribe = Observable.just(1, 2, 3)
                .all(new Predicate<Integer>() {
                    @Override
                    public boolean test(Integer integer) throws Exception {
                        return integer>2;
                    }
                })
                .subscribe(aBoolean -> Log.d(TAG, "aBoolean:" + aBoolean));

log

02-11 16:33:45.936 10199-10199/... D/SplashActivity: aBoolean:false

contains

  • 判斷是否包含
 Disposable subscribe = Observable.just(1, 2, 3, 4, 5)
                .contains(1)
                .subscribe(aBoolean -> Log.d(TAG, "aBoolean:" + aBoolean));

log

02-11 17:28:06.486 15538-15538/... D/SplashActivity: aBoolean:true

isEmpty

  • 判斷是否為空
Disposable subscribe = Observable.just(1, 2, 3, 4, 5)
                .isEmpty()
                .subscribe(aBoolean -> Log.d(TAG, "aBoolean:" + aBoolean));

log

02-11 17:31:04.306 15894-15894/... D/SplashActivity: aBoolean:false

defaultIfEmpty

  • 當(dāng)什么也不發(fā)送直接發(fā)送 complete 的時(shí)候,給與一個(gè)默認(rèn)值,如果只發(fā)送一個(gè) onError 的話,則這個(gè)默認(rèn)值不會(huì)起作用
Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> e) throws Exception {
                e.onComplete();
            }
        })
                .defaultIfEmpty(1)
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Integer integer) {
                        Log.d(TAG, "integer:" + integer);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG, "onComplete");
                    }
                });

log

02-11 17:35:40.806 16324-16324/... D/SplashActivity: integer:1
02-11 17:35:40.806 16324-16324/... D/SplashActivity: onComplete

takeWhile

  • takeWhile
    只發(fā)送滿足條件的,但一旦碰到不滿足的,后面的均不會(huì)發(fā)送,發(fā)送 complete 結(jié)束

  • takeUntil
    一直發(fā)送,直到發(fā)送到滿足條件的結(jié)束,并且,滿足條件的那一個(gè)也會(huì)發(fā)送,之后發(fā)送complete 結(jié)束

//takeWhile 
Observable.just(1, 2, 3, 4, 5)
                .takeWhile(new Predicate<Integer>() {
                    @Override
                    public boolean test(Integer integer) throws Exception {
                        return integer != 4;
                    }
                })
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Integer integer) {
                        Log.d(TAG, "integer:" + integer);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG, "onComplete");
                    }
                });

log

02-11 16:37:18.896 10620-10620/... D/SplashActivity: integer:1
02-11 16:37:18.896 10620-10620/... D/SplashActivity: integer:2
02-11 16:37:18.896 10620-10620/... D/SplashActivity: integer:3
02-11 16:37:18.896 10620-10620/... D/SplashActivity: onComplete
//takeUntil          
Observable.just(1, 2, 3, 4, 5, 6)
                .takeUntil(new Predicate<Integer>() {
                    @Override
                    public boolean test(Integer integer) throws Exception {
                        return integer == 4;
                    }
                })
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Integer integer) {
                        Log.d(TAG, "integer:" + integer);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG, "onComplete");
                    }
                });

log

02-11 17:03:11.396 12703-12703/... D/SplashActivity: integer:1
02-11 17:03:11.396 12703-12703/... D/SplashActivity: integer:2
02-11 17:03:11.396 12703-12703/... D/SplashActivity: integer:3
02-11 17:03:11.396 12703-12703/... D/SplashActivity: integer:4
02-11 17:03:11.396 12703-12703/... D/SplashActivity: onComplete
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。