有条件的RxJava断链

时间:2016-05-05 13:30:41

标签: java android conditional 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
                        }
                    }
                })

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

1 个答案:

答案 0 :(得分: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