有时候会使用rxJava的filter操作符来过滤重复的数据,用起来非常的方便,返回true的元素会通过,返回false的元素则会被丢弃.但是存在这样一种情况,如果所有的元素都被过滤掉了,丢弃了,后续subscribe的onNext()也不会被调用.这个时候我们要如何得知呢?大多数情况下都不需要关心,但是在有的情况下我们又需要知道,是不是所有的元素都被过滤了.
filter操作符本身并没有提供这样的功能,只能通过其他的方式了:
var hasElement = false
map = map.filter {
return 过滤结果
}.doOnNext {
hasElement = true
}.doOnTerminate {
if (!hasElement) {
//全被过滤了
onResult.invoke(0)
}
}
这样在onTerminate的时候我们查看是否有元素被发射,就知道有没有被全部过滤掉了.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。