【发布时间】:2021-12-18 05:00:50
【问题描述】:
基于 id 列表,我需要检索包含每个用户详细信息的用户列表。下面是我的模型和 API 的简化;
data class UserDTO(val id: String)
data class PetDTO(val name: String)
interface Api {
suspend fun users(): List<UserDTO>
suspend fun pets(userId: String): List<PetDTO>
}
data class User(
val id: String,
val pets: List<Pet>
)
data class Pet(val name: String)
class UsersRepository(api: Api) {
val users: Flow<List<User>> = TODO()
}
在 RxJava 中我会这样做:
val users: Observable<List<User>> = api.users()
.flatMapIterable { it }
.concatMap { userDto ->
api.pets(userDto.id)
.map { petsListDto ->
User(userDto.id, petsListDto.map { Pet(it.name) })
}
}.toList()
如何使用 Kotlin Flow 实现 UsersRepository 并返回 Users 的列表?
【问题讨论】:
标签: android kotlin reactive-programming kotlin-coroutines flow