Вернуть Single вместо Observable из итерируемого - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь написать шутку, в которой входные данные имеют вид list of Strings скажем UserIds и возвращаются как Single<> Метод выглядит примерно так

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)
                     }
             }
    }

Эта функция возвращает

Observable<Single<Pair<String, List<UserSubjects>>>> вместо Single<Pair<String, List<UserSubjects>>>. Как вернуть требуемый вывод?

1 Ответ

0 голосов
/ 21 октября 2019

Вы можете использовать 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()
}
...