[英]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.