RxJava flatmap:如何检查哪个observable发出错误

时间:2018-02-13 00:48:09

标签: android rx-java

我正在使用RxJava的flatmap,以便按顺序执行多个呼叫,其中一个呼叫依赖于前一个呼叫。我还需要知道哪个observable在调用onError的情况下发出错误,以便正确实现我的错误处理。我如何实现这一目标?

这是我的代码:

mSubscription = RxUtil.callObservable(mDataManager.createAccount(email, password))
            .flatMap(new Func1<AuthResult, Observable<Void>>() {
                @Override
                public Observable<Void> call(AuthResult authResult) {

                    User user = new User(0, null, null, name, null, username, 0, 0);

                    return RxUtil.callObservable(mDataManager.createUser(authResult.getUser().getUid(), user));
                }
            })
            .subscribe(new Subscriber<Void>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable throwable) {
                    try {
                        throw (Exception) throwable;
                    } catch (FirebaseAuthUserCollisionException ucException) {
                        getPickUpView().showError(PickUpApplication.getContext().getString(R.string.error_account_exists));
                    } catch (Exception exception) {
                        getPickUpView().showError(PickUpApplication.getContext().getString(R.string.error_account_general));
                    }
                }

                @Override
                public void onNext(Void aVoid) {
                    getPickUpView().createAccountSuccessful(authResult);
                }
            });

1 个答案:

答案 0 :(得分:0)

我正在考虑这个错误的方式。总结一下,我认为这是一个我不需要解决的问题。无论observable发出错误,RxJava都会在onError方法中发出所有错误。一旦onError被调用,订阅就完成了,因此将不会进行flatmap调用。

总之,我需要做的就是在同一个onError方法中处理我调用的两个observable(原始图像和flatmap图像中的一个)的错误。