У меня есть сценарий ниже, где, как только я получаю ответ службы от zip (getHardwareInfo), мне нужно сделать еще один вызов службы (getSoftwareInfo ()).Поэтому в принципе getSoftwareInfo () вызывается только в случае успешного выполнения getHardwareInfo ().
-Теперь я хочу добавить условие, при котором getSoftwareInfo () вызывается не только после успешного выполнения getHardwareInfo, но и при выполнении условия, т.е.isChristmas ().Я изменил свой код с версии 1 на версию 2, и это работает.Я отладил его и, кажется, работает нормально.Не уверен, что я делаю это правильно, так как я новичок в rxjava.Любая помощь будет оценена.
Версия 1:
public Single<ComputerData> getComputerData(){
return getHardwareInfo().observeOn(AndroidSchedulers.mainThread())
.onErrorREsumeNext(throwable->{
return Single.error()
}).flatMap(hardwareInfo->{
//do something with hardwareInfo
return getSoftwareInfo();
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(throwable->{
return Single.error());
})
.flatMap(softwareInfo->{
//do something with softwareInfo
});
версия 2:
public Single<ComputerData> getComputerData(){
return getHardwareInfo().observeOn(AndroidSchedulers.mainThread())
.onErrorREsumeNext(throwable->{
return Single.error()
}).flatMap(hardwareInfo->{
//do something with hardwareInfo
if(isChristmas()){
return getSoftwareInfo()
.observeOn(AndroidSchedulers.mainThread());
.onErrorResumeNext(throwable->{
return Single.error());
})
.flatMap(sofwareInfo->{
//do something with softwareInfo
});
} else{
//do something else.
}
});