Rxjava

Rxjava条件和布尔操作符

2019-12-18  本文已影响0人  覆水无言

目录

1. Rx简介
2. Rxjava基础知识
3. Rxjava创建操作符
4. Rxjava的线程操作
5. Rxjava变换过滤操作符
6. Rxjava合并、链接操作符
7. Rxjava条件和布尔操作符

Rxjava条件操作符

条件操作符 作用
amb 给定多个Observable,只让第一个发射数据的Observable发射数据
defaultIfEmpty 发射来自原始的Observable的数据,如果原始Observable没有发射数据则发射一个默认数据
skipUtil 丢弃原始Observable发射的数据,直到第二个Observable发射了一个数据然后发射原始Observable的剩余数据
skipWhile 丢弃原始Observable发射的数据,直到一个特定的条件为假,然后发射原始Observable剩余的数据
takeUtile 发射来自原始Observable的数据,直到第二个Observable发射了一个数据或一个通知
takeWhile 发射原始Observable的数据,直到一个特定条件为真,然后跳过剩余的数据。

amb

给两个或多个Observable,它只会发射首先发射数据的Observable的全部数据

//输出结果 1,2,3
Observable.ambArray(
                Observable.just(1,2,3), Observable.just(4,5,6)
        ).subscribe(s -> System.out.println(s));
//给第一个Observable添加延迟,结果将是 4,5,6
Observable.ambArray(
                Observable.just(1,2,3).delay(1, TimeUnit.SECONDS), Observable.just(4,5,6)
        ).subscribe(s -> System.out.println(s));

skipUtil skipWhile

//过时间4s后,第二个Observable发射了一个数据,则第一个Observable会发射剩下的全部数据
Observable.intervalRange(1,9, 0, 1 ,TimeUnit.SECONDS) //第一个Observable
                .skipUntil(Observable.timer(4, TimeUnit.SECONDS)) //第二个Observable
                .subscribe(s -> System.out.println(s));

//虽然订阅了Observable,但忽略了它的全部数据,直到skipWhile的条件不成立,则发射全部剩下的数据。
Observable.just(1,2,3,4,5)
                .skipWhile(s -> s<=2)
                .subscribe(result -> System.out.println(result));

takeUtil takeWhile

他们与skip性质的操作符正好相反

//数据正常接受,但当发射数据3时,这时候takeUtil中就会发射一个数据,之后Observable的后续数据就会全部丢弃
//输出为 1,2,3
Observable.just(1,2,3,2,5)
                .takeUntil(s -> s==3)
                .subscribe(result -> System.out.println(result));
//当数据发送4时,条件不成立,则会丢弃4及4以后的数据
//输出为 1,23
Observable.just(1,2,3,4,5)
                .takeWhile(s-> s <=3)
                .subscribe(result -> System.out.println(result));

Rxjava布尔操作符。

| 布尔操作符 | 作用|
| - - - - - - - - - - |- - - - - - - - - |
| all | 判断是否所有数据都满足条件 |
| contains | 判断Observable发射的数据是否包含一个特定的值 |
| exists, isEmpty | 判断Observable是否发射了一个值 |
| sequenceEqual | 判断两个Observables发射的序列是否相等 |

all 与contains

//这里输出的是 true,判断结果。
Observable.just(1,2,3)
    .all(i -> i<10)
    .subscribe(s -> System.out.println(s));
//判断结果 输出 true 
Observable.just(1,2,3)
                .contains(2)
                .subscribe(s -> System.out.println(s));

sequenceEqual

Observable.sequenceEqual(Observable.just(1,2,3), Observable.just(1,2,3))
                .subscribe(s -> System.out.println(s));
上一篇 下一篇

猜你喜欢

热点阅读