我要用rxJava实现这个任务,但是我是响应式编程的新手,不确定我是否用最佳实践实现了它,甚至不确定我是否理解并正确地做了它。所以请给我的建议和意见,谢谢提前!
任务声明:基本上,我需要完成的是从数据库中获取ObjectA的列表,然后将ObjectA的列表转换为ObjectB的列表,然后将ObjectB的列表转换为SearchResultOfObjectB对象。
A ->B ->B的搜索结果(以B的列表作为属性的单个对象)
我的思考过程:
- 从数据库中获取ObjectA的列表,并将其存储为Single
- 转换Single
- of ObjectA to Single
- ObjectB
- 转换Single
我的实现:
final Single<List<ObjectA>> singleOfObjectAList = fetchFromDatabase(); // one time DB request
final Single<SearchResultOfObjectB> result = singleOfObjectAList.flatMap(list -> Observable.from(list)
.map(AToBMapper::mapAToB)
.toList()
.map(BToSearchResultMapper::mapBToSearchResult)
.toSingle());
我目前的实现工作得很好,但仍然想看看这是否是正确的方法来完成这个任务。
我认为代码已经是正确的,但我想做一些细微的改变,使它更简单一点。
final Single<SearchResultOfObjectB> result = singleOfObjectAList.flatMapPublisher(Flowable::fromIterable)
.map(AToBMapper::mapAToB)
.toList()
.map(BToSearchResultMapper::mapBToSearchResult);