下面的这些操作符属于单独的rxjava-async模块,它们用于将同步对象转换为Observable。 start( ) — 创建一个Observable,它发射一个函数的返回值 toAsync( ) or asyncAction( ) or asyncFunc( ) — 将一个函数或者Action转换为已Observable,它执行这个函数并发射函数的返回值 startFuture( ) — 将
Using 创建一个只在Observable生命周期内存在的一次性资源 Using操作符让你可以指示Observable创建一个只在它的生命周期内存在的资源,当Observable终止时这个资源会被自动释放。 using操作符接受三个参数: 一个用户创建一次性资源的工厂函数 一个用于创建Observable的工厂函数 一个用于释放资源的函数 当一个观察者订阅using返回的Observable时,
Timestamp 给Observable发射的数据项附加一个时间戳 RxJava中的实现为timestamp,它将一个发射T类型数据的Observable转换为一个发射类型为Timestamped<T>的数据的Observable,每一项都包含数据的原始发射时间。 timestamp默认在immediate调度器上执行,但是可以通过参数指定其它的调度器。 Javadoc: timestamp()
Timeout 对原始Observable的一个镜像,如果过了一个指定的时长仍没有发射数据,它会发一个错误通知 如果原始Observable过了指定的一段时长没有发射任何数据,Timeout操作符会以一个onError通知终止这个Observable。 RxJava中的实现为timeout,但是有好几个变体。 第一个变体接受一个时长参数,每当原始Observable发射了一项数据,timeout就
TimeInterval 将一个发射数据的Observable转换为发射那些数据发射时间间隔的Observable TimeInterval操作符拦截原始Observable发射的数据项,替换为发射表示相邻发射物时间间隔的对象。 RxJava中的实现为timeInterval,这个操作符将原始Observable转换为另一个Observable,后者发射一个标志替换前者的数据项,这个标志表示前者的
SubscribeOn 指定Observable自身在哪个调度器上执行 很多ReactiveX实现都使用调度器 “Scheduler“来管理多线程环境中Observable的转场。你可以使用SubscribeOn操作符指定Observable在一个特定的调度器上运转。 ObserveOn操作符的作用类似,但是功能很有限,它指示Observable在一个指定的调度器上给观察者发通知。 在某些实现中还
Subscribe 操作来自Observable的发射物和通知 Subscribe操作符是连接观察者和Observable的胶水。一个观察者要想看到Observable发射的数据项,或者想要从Observable获取错误和完成通知,它首先必须使用这个操作符订阅那个Observable。 Subscribe操作符的一般实现可能会接受一到三个方法(然后由观察者组合它们),或者接受一个实现了包含这三个方
Serialize 强制一个Observable连续调用并保证行为正确 一个Observable可以异步调用它的观察者的方法,可能是从不同的线程调用。这可能会让Observable行为不正确,它可能会在某一个onNext调用之前尝试调用onCompleted或onError方法,或者从两个不同的线程同时调用onNext方法。使用Serialize操作符,你可以纠正这个Observable的行为,保
ObserveOn 指定一个观察者在哪个调度器上观察这个Observable 很多ReactiveX实现都使用调度器 “Scheduler“来管理多线程环境中Observable的转场。你可以使用ObserveOn操作符指定Observable在一个特定的调度器上发送通知给观察者 (调用观察者的onNext, onCompleted, onError方法)。 注意:当遇到一个异常时ObserveO
Do 注册一个动作作为原始Observable生命周期事件的一种占位符 你可以注册回调,当Observable的某个事件发生时,Rx会在与Observable链关联的正常通知集合中调用它。Rx实现了多种操作符用于达到这个目的。 RxJava实现了很多Do操作符的变体。 doOnEach doOnEach操作符让你可以注册一个回调,它产生的Observable每发射一项数据就会调用它一次。你可以以A
延迟一段指定的时间再发射来自Observable的发射物 Delay操作符让原始Observable在发射每项数据之前都暂停一段指定的时间段。效果是Observable发射的数据项在时间上向前整体平移了一个增量。 RxJava的实现是 delay和delaySubscription。 第一种delay接受一个定义时长的参数(包括数量和单位)。每当原始Observable发射一项数据,delay就启
这个页面列出了很多用于Observable的辅助操作符 materialize( ) — 将Observable转换成一个通知列表convert an Observable into a list of Notifications dematerialize( ) — 将上面的结果逆转回一个Observable timestamp( ) — 给Observable发射的每个数据项添加一个时间戳 s
Zip 通过一个函数将多个Observables的发射物结合到一起,基于这个函数的结果为每个结合体发射单个数据项。 Zip操作符返回一个Obversable,它使用这个函数按顺序结合两个或多个Observables发射的数据项,然后它发射这个函数返回的结果。它按照严格的顺序应用这个函数。它只发射与发射数据项最少的那个Observable一样多的数据。 RxJava将这个操作符实现为zip和zipW
Switch 将一个发射多个Observables的Observable转换成另一个单独的Observable,后者发射那些Observables最近发射的数据项 Switch订阅一个发射多个Observables的Observable。它每次观察那些Observables中的一个,Switch返回的这个Observable取消订阅前一个发射数据的Observable,开始发射最近的Observa
StartWith 在数据序列的开头插入一条指定的项 如果你想要一个Observable在发射数据之前先发射一个指定的数据序列,可以使用StartWith操作符。(如果你想一个Observable发射的数据末尾追加一个数据序列可以使用Concat操作符。) 可接受一个Iterable或者多个Observable作为函数的参数。 Javadoc: startWith(Iterable)) Javad