Kotlin 从iterable返回单个而不是可观察
我正试图写一个有趣的东西,它以字符串列表的形式输入,比如说用户ID,然后以单条返回 这个方法看起来像这样Kotlin 从iterable返回单个而不是可观察,kotlin,observable,rx-java2,iterable,Kotlin,Observable,Rx Java2,Iterable,我正试图写一个有趣的东西,它以字符串列表的形式输入,比如说用户ID,然后以单条返回 这个方法看起来像这样 fun getUserSubjectsForPeriod(userIds: List<String>, startDate: String, endDate: String): Single<Pair<String, List<UserSubjects>>> { return Observable.fromIterable(us
fun getUserSubjectsForPeriod(userIds: List<String>, startDate: String, endDate: String): Single<Pair<String, List<UserSubjects>>> {
return Observable.fromIterable(userIds)
.map {id->
userSubjectRepository.loadUserSubjects(id, startDate, endDate)
.map {
val userSubjects = userSubjectMapper.mapToDomain(it)
Pair(id,userSubjects)
}
}
}
fun getUserSubjectsForPeriod(userid:List,startDate:String,endDate:String):单个{
返回Observable.fromIterable(userid)
.map{id->
userSubjectRepository.loadUserSubjects(id、startDate、endDate)
.地图{
val userSubjects=userSubjectMapper.maptomain(it)
配对(id、用户主题)
}
}
}
此函数正在返回
可观察
而不是单个
。
如何返回所需的输出?您可以使用toList()
方法Observable
我不知道userSubjectRepository.loadUserSubjects的签名,所以我认为它应该返回Single
fun getUserSubjectsForPeriod(userIds: List<String>, startDate: String, endDate: String): Single<List<Pair<String, UserSubjects>>> {
return Observable.fromIterable(userIds)
.flatMapSingle { id ->
userSubjectRepository.loadUserSubjects(id, startDate, endDate)
.map {
val userSubjects = userSubjectMapper.mapToDomain(it)
Pair(id, userSubjects)
}
}.toList()
}
fun getUserSubjectsForPeriod(userid:List,startDate:String,endDate:String):单个{
返回Observable.fromIterable(userid)
.flatMapSingle{id->
userSubjectRepository.loadUserSubjects(id、startDate、endDate)
.地图{
val userSubjects=userSubjectMapper.maptomain(it)
配对(id、用户主题)
}
}托利斯先生()
}
您正在迭代id列表,并使用id和每个id的UserSubject列表创建一个Pair实例。如果要返回一个实例(单个),而不是该对的多个实例(可观察),您要返回哪一个?第一个?最后一个?如果你想在一个单一的而不是可观察的范围内返回所有的签名,那么你需要的是一个单一的签名吗?我想返回所有。。。但我相信我不必做单曲。但我的问题是,如何返回Single而不是observativey您可以使用flatMapSingle
来避免这种转换。