RxAndroid - Return 来自 flatMap 的数组列表
RxAndroid - Return an arraylist from flatMap
我刚刚开始研究 RxJava/RxAndroid 与 Retrofit 的结合。我喜欢 RxAndroid 提供的强大功能,但我被困在一个特定的地方,似乎无法找到解决方案。我基本上有一个 API,它接受一个用户并从 API 获取有关该用户的信息,虽然这很有效,但我想做的是而不是 returning 每个用户的信息单独 return 用户信息的数组列表。
Observable.from(interestingUsers) //3 users declared statically for test
.flatMap(user -> gitHubService.getUserData(user))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(gitHubUser -> Log.e("Log", "User data returned : " + gitHubUser.getName()));
上面的代码只记录了单个用户三次,我想要的是一个包含 3 个用户的列表 returned 作为一个结果。
我知道这可能是一件微不足道的事情,但我就是想不通。任何帮助将不胜感激。
Observable.toList
将 Observable<T>
转换为 Observable<List<T>>
:
Observable.from(interestingUsers)
.flatMap(user -> gitHubService.getUserData(user))
.toList()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(users -> {
for (final User user : users) {
Log.e("Log", "User data returned : " + user.getName())
}
});
我刚刚开始研究 RxJava/RxAndroid 与 Retrofit 的结合。我喜欢 RxAndroid 提供的强大功能,但我被困在一个特定的地方,似乎无法找到解决方案。我基本上有一个 API,它接受一个用户并从 API 获取有关该用户的信息,虽然这很有效,但我想做的是而不是 returning 每个用户的信息单独 return 用户信息的数组列表。
Observable.from(interestingUsers) //3 users declared statically for test
.flatMap(user -> gitHubService.getUserData(user))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(gitHubUser -> Log.e("Log", "User data returned : " + gitHubUser.getName()));
上面的代码只记录了单个用户三次,我想要的是一个包含 3 个用户的列表 returned 作为一个结果。
我知道这可能是一件微不足道的事情,但我就是想不通。任何帮助将不胜感激。
Observable.toList
将 Observable<T>
转换为 Observable<List<T>>
:
Observable.from(interestingUsers)
.flatMap(user -> gitHubService.getUserData(user))
.toList()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(users -> {
for (final User user : users) {
Log.e("Log", "User data returned : " + user.getName())
}
});