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