我想用Company
填充每个Employee
,然后将其保存在持久存储中,所以我有这段代码:
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()
未被调用,并且并非所有Company
都被保留。
我该如何解决这个问题?我想存储所有公司,而不仅仅是那些有员工的公司。在向员工填写公司后,必须调用save()
方法。
答案 0 :(得分:1)
我找到了解决方案。现在,如果公司没有员工,则会返回Observable.just(Collections.emptyList())
,而不是Observable.empty()
。任何评论将不胜感激