目錄
1. Rx簡介
2. Rxjava基礎知識
3. Rxjava創(chuàng)建操作符
4. Rxjava的線程操作
5. Rxjava變換過濾操作符
6. Rxjava合并霉猛、鏈接操作符
7. Rxjava條件和布爾操作符
Rxjava條件操作符
條件操作符 | 作用 |
---|---|
amb | 給定多個Observable保屯,只讓第一個發(fā)射數(shù)據(jù)的Observable發(fā)射數(shù)據(jù) |
defaultIfEmpty | 發(fā)射來自原始的Observable的數(shù)據(jù),如果原始Observable沒有發(fā)射數(shù)據(jù)則發(fā)射一個默認數(shù)據(jù) |
skipUtil | 丟棄原始Observable發(fā)射的數(shù)據(jù),直到第二個Observable發(fā)射了一個數(shù)據(jù)然后發(fā)射原始Observable的剩余數(shù)據(jù) |
skipWhile | 丟棄原始Observable發(fā)射的數(shù)據(jù)碳抄,直到一個特定的條件為假箫爷,然后發(fā)射原始Observable剩余的數(shù)據(jù) |
takeUtile | 發(fā)射來自原始Observable的數(shù)據(jù),直到第二個Observable發(fā)射了一個數(shù)據(jù)或一個通知 |
takeWhile | 發(fā)射原始Observable的數(shù)據(jù)硬萍,直到一個特定條件為真窝撵,然后跳過剩余的數(shù)據(jù)。 |
amb
給兩個或多個Observable襟铭,它只會發(fā)射首先發(fā)射數(shù)據(jù)的Observable的全部數(shù)據(jù)
//輸出結果 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發(fā)射了一個數(shù)據(jù)寒砖,則第一個Observable會發(fā)射剩下的全部數(shù)據(jù)
Observable.intervalRange(1,9, 0, 1 ,TimeUnit.SECONDS) //第一個Observable
.skipUntil(Observable.timer(4, TimeUnit.SECONDS)) //第二個Observable
.subscribe(s -> System.out.println(s));
//雖然訂閱了Observable赐劣,但忽略了它的全部數(shù)據(jù),直到skipWhile的條件不成立哩都,則發(fā)射全部剩下的數(shù)據(jù)魁兼。
Observable.just(1,2,3,4,5)
.skipWhile(s -> s<=2)
.subscribe(result -> System.out.println(result));
takeUtil takeWhile
他們與skip性質的操作符正好相反
//數(shù)據(jù)正常接受,但當發(fā)射數(shù)據(jù)3時漠嵌,這時候takeUtil中就會發(fā)射一個數(shù)據(jù)咐汞,之后Observable的后續(xù)數(shù)據(jù)就會全部丟棄
//輸出為 1,2,3
Observable.just(1,2,3,2,5)
.takeUntil(s -> s==3)
.subscribe(result -> System.out.println(result));
//當數(shù)據(jù)發(fā)送4時盖呼,條件不成立,則會丟棄4及4以后的數(shù)據(jù)
//輸出為 1,23
Observable.just(1,2,3,4,5)
.takeWhile(s-> s <=3)
.subscribe(result -> System.out.println(result));
Rxjava布爾操作符化撕。
| 布爾操作符 | 作用|
| - - - - - - - - - - |- - - - - - - - - |
| all | 判斷是否所有數(shù)據(jù)都滿足條件 |
| contains | 判斷Observable發(fā)射的數(shù)據(jù)是否包含一個特定的值 |
| exists几晤, isEmpty | 判斷Observable是否發(fā)射了一個值 |
| sequenceEqual | 判斷兩個Observables發(fā)射的序列是否相等 |
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));