Kotlin 从iterable返回单个而不是可观察

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

我正试图写一个有趣的东西,它以字符串列表的形式输入,比如说用户ID,然后以单条返回 这个方法看起来像这样

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
来避免这种转换。