IgnoreElements 不发射任何数据,只发射Observable的终止通知 IgnoreElements操作符抑制原始Observable发射的所有数据,只允许它的终止通知(onError或onCompleted)通过。 如果你不关心一个Observable发射的数据,但是希望在它完成时或遇到错误终止时收到通知,你可以对Observable使用ignoreElements操作符,它会确保永
First 只发射第一项(或者满足某个条件的第一项)数据 如果你只对Observable发射的第一项数据,或者满足某个条件的第一项数据感兴趣,你可以使用First操作符。 在某些实现中,First没有实现为一个返回Observable的过滤操作符,而是实现为一个在当时就发射原始Observable指定数据项的阻塞函数。在这些实现中,如果你想要的是一个过滤操作符,最好使用Take(1)或者Eleme
Filter 只发射通过了谓词测试的数据项 Filter操作符使用你指定的一个谓词函数测试数据项,只有通过测试的数据才会被发射。 RxJava将这个操作符实现为filter函数。 示例代码 Observable.just(1, 2, 3, 4, 5) .filter(new Func1<Integer, Boolean>() { @Override
ElementAt 只发射第N项数据 ElementAt操作符获取原始Observable发射的数据序列指定索引位置的数据项,然后当做自己的唯一数据发射。 RxJava将这个操作符实现为elementAt,给它传递一个基于0的索引值,它会发射原始Observable数据序列对应索引位置的值,如果你传递给elementAt的值为5,那么它会发射第六项的数据。 如果你传递的是一个负数,或者原始Obse
Distinct 抑制(过滤掉)重复的数据项 Distinct的过滤规则是:只允许还没有发射过的数据项通过。 在某些实现中,有一些变体允许你调整判定两个数据不同(distinct)的标准。还有一些实现只比较一项数据和它的直接前驱,因此只会从序列中过滤掉连续重复的数据。 distinct() RxJava将这个操作符实现为distinct函数。 示例代码 Observable.just(1, 2,
Debounce 仅在过了一段指定的时间还没发射数据时才发射一个数据 Debounce操作符会过滤掉发射速率过快的数据项。 RxJava将这个操作符实现为throttleWithTimeout和debounce。 注意:这个操作符会会接着最后一项数据发射原始Observable的onCompleted通知,即使这个通知发生在你指定的时间窗口内(从最后一项数据的发射算起)。也就是说,onComple
这个页面展示的操作符可用于过滤和选择Observable发射的数据序列。 filter( ) — 过滤数据 takeLast( ) — 只发射最后的N项数据 last( ) — 只发射最后的一项数据 lastOrDefault( ) — 只发射最后的一项数据,如果Observable为空就发射默认值 takeLastBuffer( ) — 将最后的N项数据当做单个数据发射 skip( ) — 跳过
Window 定期将来自原始Observable的数据分解为一个Observable窗口,发射这些窗口,而不是每次发射一项数据 Window和Buffer类似,但不是发射来自原始Observable的数据包,它发射的是Observables,这些Observables中的每一个都发射原始Observable数据的一个子集,最后发射一个onCompleted通知。 和Buffer一样,Window有
Scan 连续地对数据序列的每一项应用一个函数,然后连续发射结果 Scan操作符对原始Observable发射的第一项数据应用一个函数,然后将那个函数的结果作为自己的第一项数据发射。它将函数的结果同第二项数据一起填充给这个函数来产生它自己的第二项数据。它持续进行这个过程来产生剩余的数据序列。这个操作符在某些情况下被叫做accumulator。 RxJava实现了scan操作符。 示例代码: Obs
Map 对Observable发射的每一项数据应用一个函数,执行变换操作 Map操作符对原始Observable发射的每一项数据应用一个你选择的函数,然后返回一个发射这些结果的Observable。 RxJava将这个操作符实现为map函数。这个操作符默认不在任何特定的调度器上执行。 Javadoc: map(Func1)) cast cast操作符将原始Observable发射的每一项数据都强制
GroupBy 将一个Observable分拆为一些Observables集合,它们中的每一个发射原始Observable的一个子序列 GroupBy操作符将原始Observable分拆为一些Observables集合,它们中的每一个发射原始Observable数据序列的一个子序列。哪个数据项由哪一个Observable发射是由一个函数判定的,这个函数给每一项指定一个Key,Key相同的数据会被同
FlatMap FlatMap将一个发射数据的Observable变换为多个Observables,然后将它们发射的数据合并后放进一个单独的Observable FlatMap操作符使用一个指定的函数对原始Observable发射的每一项数据执行变换操作,这个函数返回一个本身也发射数据的Observable,然后FlatMap合并这些Observables发射的数据,最后将合并后的结果当做它自己的
Buffer 定期收集Observable的数据放进一个数据包裹,然后发射这些数据包裹,而不是一次发射一个值。 Buffer操作符将一个Observable变换为另一个,原来的Observable正常发射数据,变换产生的Observable发射这些数据的缓存集合。Buffer操作符在很多语言特定的实现中有很多种变体,它们在如何缓存这个问题上存在区别。 注意:如果原来的Observable发射了一个
这个页面展示了可用于对Observable发射的数据执行变换操作的各种操作符。 map( ) — 对序列的每一项都应用一个函数来变换Observable发射的数据序列 flatMap( ), concatMap( ), and flatMapIterable( ) — 将Observable发射的数据集合变换为Observables集合,然后将这些Observable发射的数据平坦化的放进一个单独
Timer 创建一个Observable,它在一个给定的延迟后发射一个特殊的值。 Timer操作符创建一个在给定的时间段之后返回一个特殊值的Observable。 RxJava将这个操作符实现为timer函数。 timer返回一个Observable,它在延迟一段给定的时间后发射一个简单的数字0。 timer操作符默认在computation调度器上执行。有一个变体可以通过可选参数指定Schedu