条件和布尔操作

    传递一个谓词函数给操作符,这个函数接受原始Observable发射的数据,根据计算返回一个布尔值。All返回一个只发射一个单个布尔值的Observable,如果原始Observable正常终止并且每一项数据都满足条件,就返回true;如果原始Observable的任何一项数据不满足条件就返回False。

    all

    RxJava将这个操作符实现为all,它默认不在任何特定的调度器上执行。

    Amb

    给定两个或多个Observables,它只发射首先发射数据或通知的那个Observable的所有数据

    当你传递多个Observable给Amb时,它只发射其中一个Observable的数据和通知:首先发送通知给Amb的那个,不管发射的是一项数据还是一个onErroronCompleted通知。Amb将忽略和丢弃其它所有Observables的发射物。

    amb

    RxJava的实现是amb,有一个类似的对象方法ambWith。例如,Observable.amb(o1,o2)o1.ambWith(o2)是等价的。

    这个操作符默认不在任何特定的调度器上执行。

    Contains

    判定一个Observable是否发射一个特定的值

    Contains传一个指定的值,如果原始Observable发射了那个值,它返回的Observable将发射true,否则发射false。

    相关的一个操作符IsEmpty用于判定原始Observable是否没有发射任何数据。

    contains

    默认不在任何特定的调度器上执行。

    • Javadoc: )

    exists默认不在任何特定的调度器上执行。

    isEmpty

    isEmpty默认不在任何特定的调度器上执行。

    • Javadoc: )

    发射来自原始Observable的值,如果原始Observable没有发射任何值,就发射一个默认值

    DefaultIfEmpty简单的精确地发射原始Observable的值,如果原始Observable没有发射任何数据正常终止(以onCompletedd的形式),DefaultIfEmpty返回的Observable就发射一个你提供的默认值。

    RxJava将这个操作符实现为defaultIfEmpty。它默认不在任何特定的调度器上执行。

    还有一个新的操作符switchIfEmpty,不在RxJava 1.0.0版中,它和defaultIfEmtpy类似,不同的是,如果原始Observable没有发射数据,它发射一个备用Observable的发射物。

    SequenceEqual

    判定两个Observables是否发射相同的数据序列。

    sequenceEqual

    传递两个Observable给SequenceEqual操作符,它会比较两个Observable的发射物,如果两个序列是相同的(相同的数据,相同的顺序,相同的终止状态),它就发射true,否则发射false。

    它还有一个版本接受第三个参数,可以传递一个函数用于比较两个数据项是否相同。

    这个操作符默认不在任何特定的调度器上执行。

    SkipUntil

    丢弃原始Observable发射的数据,直到第二个Observable发射了一项数据

    skipUntil

    SkipUntil订阅原始的Observable,但是忽略它的发射物,直到第二个Observable发射了一项数据那一刻,它开始发射原始Observable。

    丢弃Observable发射的数据,直到一个指定的条件不成立

    SkipWhile订阅原始的Observable,但是忽略它的发射物,直到你指定的某个条件变为false的那一刻,它开始发射原始Observable。

    默认不在任何特定的调度器上执行。

    • Javadoc: )

    TakeUntil

    当第二个Observable发射了一项数据或者终止时,丢弃原始Observable发射的任何数据

    takeUntil

    TakeUntil订阅并开始发射原始Observable,它还监视你提供的第二个Observable。如果第二个Observable发射了一项数据或者发射了一个终止通知,TakeUntil返回的Observable会停止发射原始Observable并终止。

    RxJava中的实现是takeUntil。注意:第二个Observable发射一项数据或一个onError通知或一个onCompleted通知都会导致takeUntil停止发射数据。

    takeUntil默认不在任何特定的调度器上执行。

    • Javadoc: )

    takeUntil

    还有一个版本的takeUntil,不在RxJava 1.0.0版中,它使用一个谓词函数而不是第二个Observable来判定是否需要终止发射数据,它的行为类似于takeWhile

    TakeWhile

    发射Observable发射的数据,直到一个指定的条件不成立

    TakeWhile发射原始Observable,直到你指定的某个条件不成立的那一刻,它停止发射原始Observable,并终止自己的Observable。

    RxJava中的takeWhile操作符返回一个镜像原始Observable行为的Observable,直到某一项数据你指定的函数返回false那一刻,这个新的Observable发射onCompleted终止通知。

    默认不在任何特定的调度器上执行。