假设我们有3个服务, employeeTitle
, employeeName
, employeeLocation
. 如果所有服务三个服务抛出错误 employeeTitle
, employeeName
和 employeeLocation
服务只会抛出1个错误?根据文档,这应该是行为是正确的吗?如果只有 employeeTitle
抛出错误而其他服务成功会发生什么?根据我的理解,如果 employeeTitle
抛出异常,那么zip仍然只会抛出1个异常,这个异常将是 employeeTitle's
服务错误 . 我是在正确的轨道吗?
- 在我的下面的代码中,我期待在
getEmployeeInfo()
内的第一个onErrorResumeNext
中出现zip错误 .
Single<Model> getCompositeEmployeeInfo(){ return Single.zip(
api.employeeTitle().subscribeOn(Schedulers.newThread()),
api.employeeName().subscribe(Schedulers.newThread()),
api.employeeLocation().subscribe(Schedulers.newThread()),
new Function3<EmployeeTitle, EmployeeName, EmployeeLocation>() {
@public Model apply(EmployeeTitle empTitle, EmployeeName empName,
EmployeeLocation empLocation){
//some logic
}
Single<Model2> getEmployeeInfo(){
return getEmployeeInfo().observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(throwable-> {
return Single.error(throwable}//I am expecting only 1 error(if
//more than one error is thrown) from
//zip, either employeeTitle, employeeName or employeeLocation.
)
.flatMap(model -> {
//some logic
return getEmployeePreference();
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(throwable -> {
return Single.error(throwable);
})
.flatMap(employeePreference -> {
//some logic
return Single.just(result);
}); } }