如何解决rxjava 变换操作flatmap 用法
我有这个任务要使用 rxJava 来实现,但我是响应式编程的新手,不确定我是否使用最佳实践来实现它,或者即使我理解并正确地执行它。所以请提前给我建议和意见谢谢!
任务说明: 基本上我需要完成的是从数据库中获取一个 ObjectA 列表,然后将此 ObjectA 列表转换为 ObjectB 列表,然后将此 ObjectB 列表转换为 SearchResultOfObjectB 对象。
A 列表 -> B 列表 -> B 的搜索结果(具有 B 列表作为属性的单个对象)
我的思考过程:
- 从数据库中获取一个ObjectA的列表,并将其存储为Single
- 将 ObjectA 的 Single
- 转换为 ObjectB 的 Single
- 将 ObjectB 的 Single
- 转换为 SearchResultOfObjectB 的 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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。