所有代码的演示都在RxJava2.2.4版本上进行的
所有数据都满足指定条件才会返回true,与Any相反
Observable.just(11, 12, 13, 14, 15)
.all(integer -> integer<20)
.subscribe(result -> Logger.getGlobal().info("result:" + result));
调用all方法得到
public final Single<Boolean> all(Predicate<? super T> predicate) {
ObjectHelper.requireNonNull(predicate, "predicate is null");
return RxJavaPlugins.onAssembly(new ObservableAllSingle<T>(this, predicate));
}
主要构造ObservableAllSingle实例
ObservableAllSingle类的主要方法
@Override
protected void subscribeActual(SingleObserver<? super Boolean> t) {
source.subscribe(new AllObserver<T>(t, predicate));
}
构造一个AllObserver实例
AllObserver类的onNext方法
@Override
public void onNext(T t) {
if (done) {
return;
}
boolean b;
try {
b = predicate.test(t);
} catch (Throwable e) {
Exceptions.throwIfFatal(e);
upstream.dispose();
onError(e);
return;
}
//所有条件都满足才会返回true
if (!b) {
done = true;
upstream.dispose();
downstream.onSuccess(false);
}
}