有条件的RxJava断链

Ric*_*ick 9 java conditional android rx-java rx-android

我正在创建一个可观察的序列,我基本上寻找一种很好的方法来打破链条,如果条件不满足.理想情况下,我们可以通过此方案中的错误.这基本上是删除flatmap运算符中的if/else语句.这就像我现在的样子

flatMap(new Func1<User, Observable<Response>>() {
                    @Override
                    public Observable<Response> call(Result result) {
                        if(isValid(result))) {
                            return api.getObservableResponse(); //some retrofit observable
                        } else {
                            observer.onError();
                            return null; //??? I guess this would force an error
                        }
                    }
                })
Run Code Online (Sandbox Code Playgroud)

我已经看过过滤器()和所有其他有条件的运算符,但我不确定它们是否符合我的要求.有一个更好的方法吗?或者我看起来很好吗?谢谢!

Bal*_*des 3

takeWhile使用-docs怎么样

Observable<T> whatever = ...

Observable<T> untilConditionMet = whatever
   .takeWhile(this::isValid) // modify according wherever isValid comes from
   .flatMap(r -> api.getObservableResponse()); // only doing this until isValid
Run Code Online (Sandbox Code Playgroud)