Rx java 获取flatMap后先前发出的项以清空Observable
我希望每个公司都有员工,然后将其保存在永久性存储中,因此我有以下代码:Rx java 获取flatMap后先前发出的项以清空Observable,rx-java,Rx Java,我希望每个公司都有员工,然后将其保存在永久性存储中,因此我有以下代码: public Observable<Company> getCompanies() { return repository.getCompanies() .flatMap(new Func1<Company, Observable<Employee>>() { @Override publ
public Observable<Company> getCompanies() {
return repository.getCompanies()
.flatMap(new Func1<Company, Observable<Employee>>() {
@Override
public Observable<Employee> call(Company company) {
if (company.hasEmployees()) {
return repository.getEmployees(company);
} else {
return Observable.empty();
}
}
}, new Func2<Company, Employee, Company>() {
@Override
public Company call(Company company, Employee employee) {
company.addEmployee(employee);
return company;
}
}).doOnNext(save());
}
private Action1<Company> save() {
//more code...
}
如您所见,并非所有公司都有员工,因此在某些情况下返回Observable.empty。这导致不会调用save,也不是所有的公司都被持久化
我怎样才能解决这个问题?我想存储所有的公司,而不仅仅是那些有员工的公司。在向公司填充员工后,必须调用save方法。我找到了一个解决方案。现在,若公司并没有员工,则返回Observable.justCollections.emptyList,而不是Observable.empty。如有任何意见,将不胜感激