Skip 抑制Observable发射的前N项数据 使用Skip操作符,你可以忽略Observable’发射的前N项数据,只保留之后的数据。 RxJava中这个操作符叫skip。skip的这个变体默认不在任何特定的调度器上执行。 Javadoc: skip(int)) skip的这个变体接受一个时长而不是数量参数。它会丢弃原始Observable开始的那段时间发射的数据,时长和时间单位通过参数指定
Sample 定期发射Observable最近发射的数据项 Sample操作符定时查看一个Observable,然后发射自上次采样以来它最近发射的数据。 在某些实现中,有一个ThrottleFirst操作符的功能类似,但不是发射采样期间的最近的数据,而是发射在那段时间内的第一项数据。 RxJava将这个操作符实现为sample和throttleLast。 注意:如果自上次采样以来,原始Observ
Last 只发射最后一项(或者满足某个条件的最后一项)数据 如果你只对Observable发射的最后一项数据,或者满足某个条件的最后一项数据感兴趣,你可以使用Last操作符。 在某些实现中,Last没有实现为一个返回Observable的过滤操作符,而是实现为一个在当时就发射原始Observable指定数据项的阻塞函数。在这些实现中,如果你想要的是一个过滤操作符,最好使用TakeLast(1)。
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发射的数据,最后将合并后的结果当做它自己的