美文网首页
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