假设我们有3个服务,employeeTitle,employeeName,employeeLocation . 如果所有服务三个服务抛出employeeTitle错误,employeeName和employeeLocation只会抛出1个错误?根据文档,这应该是行为是正确的吗?如果只有employeeTitle抛出错误而其他服务成功,会发生什么?根据我的理解,如果employeeTitle抛出异常,那么zip仍然只会抛出1个异常,这个异常将是employeeTitle的服务错误 . 我是在正确的轨道吗?
在我的下面的代码中,我期待zip错误出现在getEmployeeInfo()内的第一个onErrorResumeNext中
Single getCompositeEmployeeInfo(){
return Single.zip(
api.employeeTitle()
.subscribeOn(Schedulers.newThread()),
api.employeeName()
.subscribeOn(Schedulers.newThread()),
api.employeeLocation()
.subscribeOn(Schedulers.newThread()),
new Function3() {
@public Model apply(EmployeeTitle empTitle, EmployeeName empName,
EmployeeLocation empLocation){
//some logic
}
Single getEmployeeInfo(){
return getCompositeEmployeeInfo()
.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);
}); } }