目录
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));
网友评论