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



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

我有一个用户id列表(1,2,3,4,5,…(

val userIds = listOf(1, 2, 3, 4, 5)

我想列出用户数据。为了获得用户数据,我应该调用"RESTneneneba API"。(改装(在这种情况下,我应该请求多个。

获取/用户/1

获取/用户/2

获取/用户/3

获取/用户/4

获取/用户/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)
}
}

我知道这是错误的。但我不知道如何解决这个问题。"加入"、"合并"、"压缩"?我该怎么办?

使用fromIterableconcatMap:

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

最新更新