RxJava2,如何结合多个可观察的结果?

yoo*_*hok 1 android kotlin rx-java retrofit rx-java2

我正在开发Android应用程序.我有一个关于RxJava2的问题.这是一个例子:

我有一个用户ID列表.(1,2,3,4,5 ......)

val userIds = listOf(1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

我想列出用户数据.要获取用户数据,我应该调用"REST API".(改造)在这种情况下,我应该要求多个.

GET/users/1

GET/users/2

GET/users/3

GET/users/4

GET/users/5

...

fun getUsers(userIds: List<String>, callback: UsersLoadedCallback) {
    var userList = List<User>()

    val userObservables = mutableListOf<Observable<User>>()
    userIds.forEach {
        userObservables.add(UserService.getUser(it))
    }

    Observable.merge(userObservables)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe {
                userList.add(it)
            }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是错的.但我不知道如何解决这个问题."加入","合并","拉链"?我应该怎么做?

aka*_*okd 5

使用fromIterableconcatMap:

Observable.fromIterable(userIds)
    .concatMap(userId -> 
        UserService.getUser(userId).subscribeOn(Schedulers.io())
    )
    .toList()
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(users -> callback.onUsersLoaded(users), error -> { /* report */ });
Run Code Online (Sandbox Code Playgroud)