美文网首页Rxjava
Rxjava条件和布尔操作符

Rxjava条件和布尔操作符

作者: 覆水无言 | 来源:发表于2019-12-18 10:55 被阅读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));
    

    相关文章

      网友评论

        本文标题:Rxjava条件和布尔操作符

        本文链接:https://www.haomeiwen.com/subject/kdwynctx.html