filter操作符是对源observable产生的结果自定义规则进行过滤,只有满足条件的结果才会提交给订阅者:
官方流程图:
.filter(new Fuc1<t1,Boolean>(){
@override
public Boolean call(t1 t)
{
return false;
}
}
call的返回值为Bool类型,决定了是否将结果输出给订阅者:
结果:Observable.interval(1, TimeUnit.SECONDS).take(10).filter(new Func1<Long, Boolean>() { @Override public Boolean call(Long aLong) { return aLong > 5; } }).subscribe(new Action1<Long>() { @Override public void call(Long aLong) { LogUtils.d("------->call()" + aLong); } });
2-27 14:20:26.610 2425-2825/com.rxandroid.test1 D/----->: ------->call()6 02-27 14:20:27.610 2425-2825/com.rxandroid.test1 D/----->: ------->call()7 02-27 14:20:28.610 2425-2825/com.rxandroid.test1 D/----->: ------->call()8 02-27 14:20:29.610 2425-2825/com.rxandroid.test1 D/----->: ------->call()9