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)
我知道这是错的.但我不知道如何解决这个问题."加入","合并","拉链"?我应该怎么做?
使用fromIterable和concatMap:
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)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |