前言
根据Froussios英文版的学习笔记。这里省略示例。
一、filter与ignoreElements
- filter :忽略掉false的数据。
- ignoreElements: 忽略所有数据,相当于filter(v -> false)。
二、distinct 与 distinctUntilChanged
- distinct: 保证数据的唯一性,例如1 1 2 3 2,结果是1 2 3。
- distinctUntilChanged:只忽略连续的重复的值,例如1 1 2 3 2 ,结果是1 2 3 2。
三、skip 与 take
- take(int num):只发射前n个数据
- skip(int num): 跳过前n个数据,也就是take剩下的数据。
- take(long time, java.util.concurrent.TimeUnit unit):只发射time时间段内的数据。
- skip(long time, java.util.concurrent.TimeUnit unit):
跳过time时间段的数据。
四、takeUntil与takeWhile
takeuntil takewhile五、skipLast 与 takeLast
skiplast skipwhile六、skipWhile 与 skipUntil
skipwhileskipuntil
后记
图片在网址[http://reactivex.io/documentation/operators/skipwhile.html] 将skipwhile换成你想要的操作符既可以啦。
采坑之旅
- 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的流,结果不是这样的。也在这里给大家说一下,避免和我一样踩坑了。
网友评论