Android rxjavaflatmap:如何检查哪个可观察对象发出了错误
我使用RxJava的flatmap来按顺序执行多个调用,其中一个调用依赖于前一个调用。我还需要知道在调用onError的情况下哪个observable发出了错误,以便正确地实现我的错误处理。我如何做到这一点 这是我的密码:Android rxjavaflatmap:如何检查哪个可观察对象发出了错误,android,rx-java,Android,Rx Java,我使用RxJava的flatmap来按顺序执行多个调用,其中一个调用依赖于前一个调用。我还需要知道在调用onError的情况下哪个observable发出了错误,以便正确地实现我的错误处理。我如何做到这一点 这是我的密码: mSubscription = RxUtil.callObservable(mDataManager.createAccount(email, password)) .flatMap(new Func1<AuthResult, Observabl
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方法中发出所有错误,无论哪个observative发出错误。一旦调用OneError,订阅就完成了,因此flatmap调用将永远不会发生
总之,我需要做的就是用同一个onError方法处理来自我调用的原始和flatmap中的两个观察值的错误。在flatmap中,只需检查authResult==null authResult observable是否抛出错误。。否则,void observable将抛出错误。那么,即使第一个observable有错误,也将始终调用flatmap代码?那个错误没有被传播出去吗?你可以试试,让我知道。。此外,您还可以在authResult中获取一个额外字段,如String error..if authResult==null,将错误设置为sumthing…然后处理错误,但我需要检查第一个可观察对象在失败的情况下发出的异常类型,因此这不起作用