该方法在执行之后itemDao.findItemsByDetails()
返回Single<List<Int>
,我们开始执行getItemsByIds()
已经返回的方法Flowable<MutableList<Item>>
。同时,我需要为列表的每个元素添加来自其他表的某些数据。例如,第一个getAllDetailsItems()
返回Single
.
如何结合两个结果Single
,例如getAllDetailsItems()
和getAllDescriptions()
override fun findItemsByDetails(listDetails: List<String>, count: Int): Flowable<MutableList<Item>> {
return itemDao.findItemsByDetails(listDetails, count).flatMapPublisher { list ->
itemDao.getItemsByIds(list).flatMapIterable { items -> items }.flatMapSingle {
itemDao.getAllDetailsItems(it.idItem).map { list ->
mapper.mapDetailItem(it, list)
}.toFlowable().toList()
}
}
}
我知道你可以使用 zip / zipWith,但我想不起来。
zip方法用于此。
为了让任务并行执行,single 最好运行fromCallable()