rxjava转换操作(平面映射使用)



我要用rxJava实现这个任务,但是我是响应式编程的新手,不确定我是否用最佳实践实现了它,甚至不确定我是否理解并正确地做了它。所以请给我的建议和意见,谢谢提前!

任务声明:基本上,我需要完成的是从数据库中获取ObjectA的列表,然后将ObjectA的列表转换为ObjectB的列表,然后将ObjectB的列表转换为SearchResultOfObjectB对象。

A ->B ->B的搜索结果(以B的列表作为属性的单个对象)

我的思考过程:

  • 从数据库中获取ObjectA的列表,并将其存储为Single
  • 转换Singleof ObjectA to SingleObjectB
  • 转换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);

相关内容

  • 没有找到相关文章

最新更新