我正在尝试实现以下代码,其中使用flatmap运算符依次进行多个调用。 private Observable<Context> getObservable1(Context context)
引发异常,并且流程应停止进一步执行并返回异常,然后将在accept()
方法中处理该异常,并将响应返回给函数的调用者
关于如何实现相同的任何指针将不胜感激?
public class UserLoad {
public void accept(){
Observable.just(context)
.flatMap(context -> validationBA.execute(context)
.flatMap(context->{
if(isPresent(context)){
Observable<Context> observableB = getObservableB(context);
return observableB;
}else{
Observable<Context> observableA = getObservableA(context);
return observableA;
}
})
.subscribe((onNext) -> {
//handle success here
}, (onError) -> {
//handle error here [expect to handle the error here and not execute other calls in the sequence]
});
}
private Observable<Context> getObservableB(Context context) {
return Observable.just(context)
.flatMap(this::getObservable1)
.flatMap(this::getObservable2)
.flatMap(this::getObservable3)
.flatMap(ClassB::execute);
}
private Observable<Context> getObservableA(Context context) {
return Observable.just(context)
.flatMap(this::getObservable1)
.flatMap(this::getObservable2)
.flatMap(this::getObservable3)
.flatMap(ClassA::execute);
}
private Observable<Context> getObservable1(Context context) {
return UserService.execute(context)
.map(response -> {
if(null==response){
throw new UserException;
}
return response;
});
}
private Observable<Context> getObservable2(Context context) {//some implementation}
private Observable<Context> getObservable3(Context context) {//some implementation}
}