美文网首页
Rxjava1 与 Android 的故事(3)—— Filte

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

作者: ZLOVE1990 | 来源:发表于2017-10-06 22:03 被阅读0次

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

    debounce

    debounce

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

    distinct

    distinct

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

    distinctUntilChanged

    distinctUntilChanged

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

    elementAt

    elementAt

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

    filter

    filter

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

    first

    first

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

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

    take

    take

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

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

    skip

    skip

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

    skipLast方法与skip方法相对应。

    ignoreElements

    ignoreElements

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

    throttle

    throttle

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

    总结:

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

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

    相关文章

      网友评论

          本文标题:Rxjava1 与 Android 的故事(3)—— Filte

          本文链接:https://www.haomeiwen.com/subject/cdnryxtx.html