Rxjava(过滤类)-Filter
2016-10-31 16:35
148 查看
只发射通过了谓词测试的数据项
看一下filter函数
predicate就是我们的过滤函数
前面分析可知RangeProducer最终会调用
Observable.range(1, 10).filter(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer % 2 == 0; } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { System.out.println(integer); } });
看一下filter函数
public final Observable<T> filter(Func1<? super T, Boolean> predicate) { return create(new OnSubscribeFilter<T>(this, predicate)); }
public OnSubscribeFilter(Observable<T> source, Func1<? super T, Boolean> predicate) { this.source = source; this.predicate = predicate; }
predicate就是我们的过滤函数
前面分析可知RangeProducer最终会调用
void fastPath() { final long endIndex = this.endOfRange + 1L; final Subscriber<? super Integer> childSubscriber = this.childSubscriber; for (long index = currentIndex; index != endIndex; index++) { if (childSubscriber.isUnsubscribed()) { return; } childSubscriber.onNext((int) index); } if (!childSubscriber.isUnsubscribed()) { childSubscriber.onCompleted(); } }这里的childSubscriber是FilterSubscriber
public void onNext(T t) { boolean result; try { result = predicate.call(t); } catch (Throwable ex) { Exceptions.throwIfFatal(ex); unsubscribe(); onError(OnErrorThrowable.addValueAsLastCause(ex, t)); return; } if (result) { actual.onNext(t); } else { request(1); } }调用过滤函数获取过滤结果,如果为true才调用onNext,达到过滤效果
相关文章推荐
- Rxjava学习之过滤操作符—filter、elementAt
- Android函数响应式编程——必学的RxJava过滤操作符filter、elementAt、distinct、skip、take、ignoreElements、throttleFirst
- RxJava【过滤】操作符 filter distinct throttle take skip first
- Rxjava学习之过滤操作符 — distinct
- 一个Filter编码过滤的白痴问题
- Eclipse通过日志消息过滤设置Logcat Message Filter Settings来过滤自己特定项目的日志
- Ehlib DBGrideh Filter 过滤
- 使用session.createFilter()完成one-to-many关联关系的集合过滤
- android IntentFilter 使用之 data过滤
- Extjs4.x Ext.tree.Panel 过滤Filter以及trigger field的使用
- FileNameFilter文件过滤
- Yii 日期时间过滤列 filter
- 去除 ListView 在 setFilterText 设置过滤之后出现黑色弹框
- django ORM model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
- php中的常用数组函数(二)(数组元素过滤 array_filter())
- jsp Filter 实现编码过滤,和登录验证
- servlet3.0 @webfilter 过滤顺序
- 基于Filter-Hook Driver(使用ipfirewall.h)的IP过滤驱动
- Filter不过滤CSS和JS
- asp.net MVC利用ActionFilterAttribute过滤关键字的方法