将 Single<List<Maybe<Book>>> 转换为 Single<List<Book>>
Transform Single<List<Maybe<Book>>> to Single<List<Book>>
有人可以帮忙吗?
我有这些功能
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()
}
问题是 getBooks returns Single<List<Maybe<Book>>>
当我需要 Single<List<Book>>
时。我可以在不调用 blockingGet 的情况下在流中执行此操作吗?
试试这个:
getCollections() // Single<List<Collection>>
.flattenAsFlowable { it } // Flowable<Collection>
.concatMapMaybe { collectonToBook(it) } // Flowable<Book>
.toList() // Single<List<Book>>
换句话说,将内部的List
展开到它的元素中,将Collection
转换成Book
,连接它们各自的Maybe
源,最后收集Book
再次进入List
。
有人可以帮忙吗?
我有这些功能
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()
}
问题是 getBooks returns Single<List<Maybe<Book>>>
当我需要 Single<List<Book>>
时。我可以在不调用 blockingGet 的情况下在流中执行此操作吗?
试试这个:
getCollections() // Single<List<Collection>>
.flattenAsFlowable { it } // Flowable<Collection>
.concatMapMaybe { collectonToBook(it) } // Flowable<Book>
.toList() // Single<List<Book>>
换句话说,将内部的List
展开到它的元素中,将Collection
转换成Book
,连接它们各自的Maybe
源,最后收集Book
再次进入List
。