RxJava使用filter时如何知道是否所有的item都被过滤了?
Posted Void
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RxJava使用filter时如何知道是否所有的item都被过滤了?相关的知识,希望对你有一定的参考价值。
有时候会使用rxJava的filter操作符来过滤重复的数据,用起来非常的方便,返回true的元素会通过,返回false的元素则会被丢弃.但是存在这样一种情况,如果所有的元素都被过滤掉了,丢弃了,后续subscribe的onNext()也不会被调用.这个时候我们要如何得知呢?大多数情况下都不需要关心,但是在有的情况下我们又需要知道,是不是所有的元素都被过滤了.
filter操作符本身并没有提供这样的功能,只能通过其他的方式了:
var hasElement = false
map = map.filter {
return 过滤结果
}.doOnNext {
hasElement = true
}.doOnTerminate {
if (!hasElement) {
//全被过滤了
onResult.invoke(0)
}
}
这样在onTerminate的时候我们查看是否有元素被发射,就知道有没有被全部过滤掉了.
以上是关于RxJava使用filter时如何知道是否所有的item都被过滤了?的主要内容,如果未能解决你的问题,请参考以下文章