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 all(Predicate predicate) {
        ObjectHelper.requireNonNull(predicate, "predicate is null");
        return RxJavaPlugins.onAssembly(new ObservableAllSingle(this, predicate));
    }

主要构造ObservableAllSingle实例
ObservableAllSingle类的主要方法

  @Override
    protected void subscribeActual(SingleObserver t) {
        source.subscribe(new AllObserver(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);
            }
        }

你可能感兴趣的:(Rxjava All)