美文网首页
RxJava学习(4)-过滤数据

RxJava学习(4)-过滤数据

作者: crossroads | 来源:发表于2018-01-23 17:16 被阅读25次

    前言

    根据Froussios英文版的学习笔记。这里省略示例。

    一、filter与ignoreElements

    1. filter :忽略掉false的数据。
    2. ignoreElements: 忽略所有数据,相当于filter(v -> false)。

    二、distinct 与 distinctUntilChanged

    1. distinct: 保证数据的唯一性,例如1 1 2 3 2,结果是1 2 3。
    2. distinctUntilChanged:只忽略连续的重复的值,例如1 1 2 3 2 ,结果是1 2 3 2。

    三、skip 与 take

    1. take(int num):只发射前n个数据
    2. skip(int num): 跳过前n个数据,也就是take剩下的数据。
    3. take(long time, java.util.concurrent.TimeUnit unit):只发射time时间段内的数据。
    4. skip(long time, java.util.concurrent.TimeUnit unit):
      跳过time时间段的数据。

    四、takeUntil与takeWhile

    takeuntil takewhile

    五、skipLast 与 takeLast

    skiplast skipwhile

    六、skipWhile 与 skipUntil

    skipwhile
    skipuntil

    后记

    图片在网址[http://reactivex.io/documentation/operators/skipwhile.html] 将skipwhile换成你想要的操作符既可以啦。

    采坑之旅

    1. takeWhile
     Observable.interval(1, TimeUnit.SECONDS)
                            .observeOn(AndroidSchedulers.mainThread())
                            .doOnNext { it -> Log.d("test", "before takewhile ->$it ") }
                            .takeWhile { it -> it < 3 }
                            .subscribe({ it -> Log.d("test", "after takewhile ->$it") },
                                { throwable -> Log.d("test", "error-> $throwable") })
    

    会输出什么???

    答案如下:

     D/test: before takewhile ->0 
     D/test: after takewhile ->0
     D/test: before takewhile ->1 
     D/test: after takewhile ->1
     D/test: before takewhile ->2 
     D/test: after takewhile ->2
     D/test: before takewhile ->3 
    

    原本以为takeWhile不会影响before takewhile的流,结果不是这样的。也在这里给大家说一下,避免和我一样踩坑了。

    相关文章

      网友评论

          本文标题:RxJava学习(4)-过滤数据

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