判定是否Observable發(fā)射的所有數(shù)據(jù)都滿足某個條件
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/all.c.png" alt="all" />
傳遞一個謂詞函數(shù)給All
操作符,這個函數(shù)接受原始Observable發(fā)射的數(shù)據(jù),根據(jù)計算返回一個布爾值。All
返回一個只發(fā)射一個單個布爾值的Observable,如果原始Observable正常終止并且每一項數(shù)據(jù)都滿足條件,就返回true;如果原始Observable的任何一項數(shù)據(jù)不滿足條件就返回False。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/all.png" alt="all" />
RxJava將這個操作符實現(xiàn)為all
,它默認不在任何特定的調(diào)度器上執(zhí)行。
給定兩個或多個Observables,它只發(fā)射首先發(fā)射數(shù)據(jù)或通知的那個Observable的所有數(shù)據(jù)
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/amb.c.png" alt="amb" />
當你傳遞多個Observable給Amb
時,它只發(fā)射其中一個Observable的數(shù)據(jù)和通知:首先發(fā)送通知給Amb
的那個,不管發(fā)射的是一項數(shù)據(jù)還是一個onError
或onCompleted
通知。Amb
將忽略和丟棄其它所有Observables的發(fā)射物。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/amb.png" alt="amb" />
RxJava的實現(xiàn)是amb
,有一個類似的對象方法ambWith
。例如,Observable.amb(o1,o2)
和o1.ambWith(o2)
是等價的。
這個操作符默認不在任何特定的調(diào)度器上執(zhí)行。
判定一個Observable是否發(fā)射一個特定的值
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/contains.c.png" alt="contains" />
給Contains
傳一個指定的值,如果原始Observable發(fā)射了那個值,它返回的Observable將發(fā)射true,否則發(fā)射false。
相關(guān)的一個操作符IsEmpty
用于判定原始Observable是否沒有發(fā)射任何數(shù)據(jù)。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/contains.png" alt="contains" />
contains
默認不在任何特定的調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/exists.png" alt="exists" />
RxJava中還有一個exists
操作符,它通過一個謂詞函數(shù)測試原始Observable發(fā)射的數(shù)據(jù),只要任何一項滿足條件就返回一個發(fā)射true的Observable,否則返回一個發(fā)射false的Observable。
exists
默認不在任何特定的調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/isEmpty.png" alt="isEmpty" />
isEmpty
默認不在任何特定的調(diào)度器上執(zhí)行。
發(fā)射來自原始Observable的值,如果原始Observable沒有發(fā)射任何值,就發(fā)射一個默認值
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/defaultIfEmpty.c.png" alt="defaultIfEmtpy" />
DefaultIfEmpty
簡單的精確地發(fā)射原始Observable的值,如果原始Observable沒有發(fā)射任何數(shù)據(jù)正常終止(以onCompleted
d的形式),DefaultIfEmpty
返回的Observable就發(fā)射一個你提供的默認值。
RxJava將這個操作符實現(xiàn)為defaultIfEmpty
。它默認不在任何特定的調(diào)度器上執(zhí)行。
還有一個新的操作符switchIfEmpty
,不在RxJava 1.0.0版中,它和defaultIfEmtpy
類似,不同的是,如果原始Observable沒有發(fā)射數(shù)據(jù),它發(fā)射一個備用Observable的發(fā)射物。
判定兩個Observables是否發(fā)射相同的數(shù)據(jù)序列。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/sequenceEqual.c.png" alt="sequenceEqual" />
傳遞兩個Observable給SequenceEqual
操作符,它會比較兩個Observable的發(fā)射物,如果兩個序列是相同的(相同的數(shù)據(jù),相同的順序,相同的終止狀態(tài)),它就發(fā)射true,否則發(fā)射false。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/sequenceEqual.png" alt="sequenceEqual" />
它還有一個版本接受第三個參數(shù),可以傳遞一個函數(shù)用于比較兩個數(shù)據(jù)項是否相同。
這個操作符默認不在任何特定的調(diào)度器上執(zhí)行。
丟棄原始Observable發(fā)射的數(shù)據(jù),直到第二個Observable發(fā)射了一項數(shù)據(jù)
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/skipUntil.c.png" alt="skipUntil" />
SkipUntil
訂閱原始的Observable,但是忽略它的發(fā)射物,直到第二個Observable發(fā)射了一項數(shù)據(jù)那一刻,它開始發(fā)射原始Observable。
RxJava中對應的是skipUntil
,它默認不在任何特定的調(diào)度器上執(zhí)行。
丟棄Observable發(fā)射的數(shù)據(jù),直到一個指定的條件不成立
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/skipWhile.c.png" alt="skipWhile" />
SkipWhile
訂閱原始的Observable,但是忽略它的發(fā)射物,直到你指定的某個條件變?yōu)閒alse的那一刻,它開始發(fā)射原始Observable。
skipWhile
默認不在任何特定的調(diào)度器上執(zhí)行。
當?shù)诙€Observable發(fā)射了一項數(shù)據(jù)或者終止時,丟棄原始Observable發(fā)射的任何數(shù)據(jù)
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/takeUntil.c.png" alt="takeUntil" />
TakeUntil
訂閱并開始發(fā)射原始Observable,它還監(jiān)視你提供的第二個Observable。如果第二個Observable發(fā)射了一項數(shù)據(jù)或者發(fā)射了一個終止通知,TakeUntil
返回的Observable會停止發(fā)射原始Observable并終止。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/takeUntil.png" alt="takeUntil" />
RxJava中的實現(xiàn)是takeUntil
。注意:第二個Observable發(fā)射一項數(shù)據(jù)或一個onError
通知或一個onCompleted
通知都會導致takeUntil
停止發(fā)射數(shù)據(jù)。
takeUntil
默認不在任何特定的調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/takeUntil.p.png" alt="takeUntil" />
還有一個版本的takeUntil
,不在RxJava 1.0.0版中,它使用一個謂詞函數(shù)而不是第二個Observable來判定是否需要終止發(fā)射數(shù)據(jù),它的行為類似于takeWhile
。
發(fā)射Observable發(fā)射的數(shù)據(jù),直到一個指定的條件不成立
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/takeWhile.c.png" alt="takeWhile" />
TakeWhile
發(fā)射原始Observable,直到你指定的某個條件不成立的那一刻,它停止發(fā)射原始Observable,并終止自己的Observable。
RxJava中的takeWhile
操作符返回一個鏡像原始Observable行為的Observable,直到某一項數(shù)據(jù)你指定的函數(shù)返回false
那一刻,這個新的Observable發(fā)射onCompleted
終止通知。
takeWhile
默認不在任何特定的調(diào)度器上執(zhí)行。