Rxjava All

所有代码的演示都在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);
            }
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。