繁体   English   中英

RxJava Flatmap:如何检查哪个可观察到的发出错误

[英]RxJava flatmap: how to check which observable emitted an error

我使用RxJava的flatmap以便依次执行多个调用,其中一个调用依赖于上一个调用。 我还需要知道在调用onError的情况下哪个observable发出了错误,以正确实现我的错误处理。 我该如何实现?

这是我的代码:

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);
                }
            });

我在想这个错误的方式。 总而言之,我认为这是我需要解决的一个问题。 RxJava将在onError方法中发出所有错误,无论观察到的是什么都会发出错误。 一旦调用onError,预订就完成了,因此平面图调用将永远不会发生。

总而言之,我需要做的就是在同一onError方法中处理我调用的两个可观察对象(平面图中的原始对象和原始对象)中的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM