Rxjava1 与 Android 的故事(3)—— Filter

系列故事的第3篇介绍RxJava的过滤API

debounce

Rxjava1 与 Android 的故事(3)—— Filter_第1张图片
debounce

debounce方法会过滤掉发射速率过快的数据项,只要2次发射的间隔小于debounce,那么前一个就会被抛弃。

distinct

Rxjava1 与 Android 的故事(3)—— Filter_第2张图片
distinct

distinct方法只允许还没有发射过的数据项通过。

distinctUntilChanged

Rxjava1 与 Android 的故事(3)—— Filter_第3张图片
distinctUntilChanged

distinctUntilChanged,一个数据和它的前一个是不同的就可以发射。distinct和distinctUntilChanged都有一个重载方法distinct(Func1)和distinctUntilChanged(Func1),。这个Func1函数根据原始Observable发射的数据项产生一个Key,然后比较这些Key而不是数据本身,来判定两个数据是否是不同的。

elementAt

Rxjava1 与 Android 的故事(3)—— Filter_第4张图片
elementAt

elementAt方法只发射第N项数据。如果你传递的是一个负数,或者原始Observable的数据项数小于index+1,将会抛出一个IndexOutOfBoundsException异常。

filter

Rxjava1 与 Android 的故事(3)—— Filter_第5张图片
filter

filter方法只发射Func1函数中call()返回true的数据项。

first

Rxjava1 与 Android 的故事(3)—— Filter_第6张图片
first

如果你只对Observable发射的第一项数据,或者满足某个条件的第一项数据感兴趣,你可以使用First操作符。

last方法与first方法是相对应的,不再赘述。

take

Rxjava1 与 Android 的故事(3)—— Filter_第7张图片
take

take方法只发射前面的N项数据。

takeLast方法与take方法相对应,不再赘述。

skip

Rxjava1 与 Android 的故事(3)—— Filter_第8张图片
skip

skip方法忽略前N项数据,只保留之后的数据。

skipLast方法与skip方法相对应。

ignoreElements

Rxjava1 与 Android 的故事(3)—— Filter_第9张图片
ignoreElements

ignoreElements方法不发射任何数据,只发射Observable的终止通知。

throttle

Rxjava1 与 Android 的故事(3)—— Filter_第10张图片
throttle

ThrottleFirst发射在那段时间内的第一项数据,ThrottleLast发射那段时间内的最后一项数据,ThrottleLast也可以写成SamplethrottleFirst和throttleLast取得数据后,从取得数据的那项开始计时。throttleWithTimeout是弱化版的debounce,debounce操作符也可以使用时间来进行过滤,这时它跟throttleWithTimeOut使用起来是一样,但是deounce操作符还可以根据一个函数来进行限流。

总结:

以上的方法已经基本例举了RxJava中有关Observable对象过滤的API,具体用法还需要大家多加练习呀!

注:本人会在此系列文章的末尾加上GitHub源码地址,敬请期待。。。

你可能感兴趣的:(Rxjava1 与 Android 的故事(3)—— Filter)