将 Single<List<Maybe<Book>>> 转换为 Single<List<Book>>
Posted
技术标签:
【中文标题】将 Single<List<Maybe<Book>>> 转换为 Single<List<Book>>【英文标题】:Transform Single<List<Maybe<Book>>> to Single<List<Book>> 【发布时间】:2021-03-20 20:28:12 【问题描述】:有人可以帮忙吗?
我有这些功能
fun getBooks(): Single<List<Book>>
return getCollections()
.map
it.map(::collectonToBook)
fun getCollections(): Single<List<Collection>>
return db.fetchCollections()
.filter(::isBook)
fun collectonToBook(collection: Collection): Maybe<Book>
return collection.toBook()
问题是当我需要 Single<List<Book>>
时 getBooks 返回 Single<List<Maybe<Book>>>
。我可以在流中做到这一点而不调用blockingGet吗?
【问题讨论】:
【参考方案1】:试试这个:
getCollections() // Single<List<Collection>>
.flattenAsFlowable it // Flowable<Collection>
.concatMapMaybe collectonToBook(it) // Flowable<Book>
.toList() // Single<List<Book>>
换句话说,将内部List
解包为其元素,将Collection
转换为Book
,连接它们各自的Maybe
源,然后最后将Book
s 再次收集为List
。
【讨论】:
哇!它就像一个奇迹,非常感谢。并且为了快速响应!干杯!以上是关于将 Single<List<Maybe<Book>>> 转换为 Single<List<Book>>的主要内容,如果未能解决你的问题,请参考以下文章