我正在使用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);
}
});
答案 0 :(得分:0)
我正在考虑这个错误的方式。总结一下,我认为这是一个我不需要解决的问题。无论observable发出错误,RxJava都会在onError方法中发出所有错误。一旦onError被调用,订阅就完成了,因此将不会进行flatmap调用。
总之,我需要做的就是在同一个onError方法中处理我调用的两个observable(原始图像和flatmap图像中的一个)的错误。