前言
根据Froussios英文版的学习笔记。这里省略示例,也可参考https://mcxiaoke.gitbooks.io/rxdocs/content/operators/ElementAt.html ,有更加详细的示例和图片。
一、all与contains
- all:数据全部符合条件,则为true;有一个不符合,则为false;出错,则执行OnError
- contains:只要有一个符合要求,则为true。
二、isEmpty与defaultIfEmpty
- isEmpty: 没有发射任何数据则为true。
- defaultIfEmpty:没有发射任何数据的话,默认发射X,例如defaultIfEmpty(2),则发射
三、elementAt(long index) 与elementAt(long index, T defaultItem)
- elementAt(long index): 只发射第N项数据 。例如 1 2 3 4 ,elementAt(2) 就是3 .
- elementAt(long index, T defaultItem):如果索引值大于数据项数,它会发射一个默认值(通过额外的参数指定),而不是抛出异常.例如 1 2 3 4 ,elementAt(4,5) 就是5
四、sequenceEqual
判定两个Observables是否发射相同的数据序列 。例如A发送1 2 3 ,B发送1 2 3 ,返回true, 若B发送1 2 4 ,返回false。
Observable<Integer> values = Observable.create(o -> {
o.onNext(1);
o.onNext(2);
o.onError(new Exception());
});
Observable.sequenceEqual(values, values)
.subscribe(
v -> System.out.println(v),
e -> System.out.println("Error: " + e),
() -> System.out.println("Completed")
);
// 输出 Error: java.lang.Exception
网友评论