我用的是Retrofit和RxAndroid。现在我想调用api来获取用户信息,然后使用这个信息作为参数来调用另一个api来获取更多的信息。我该怎么做才能达到这个目的呢?
P/S:可以通过回调完成,但我想使用RX-Android风格。
发布于 2017-08-08 10:52:00
为此您可以使用flatMap。
伪码:
apiService.getUser()
.flatMap(user -> apiService.getUserMessages(user.getId()))
.subscribe(messages -> {
}, error -> {
});发布于 2017-08-08 10:54:42
你可以这样做:
Observable<User> userObservable = api.getUserInformation();
userObservable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<User>() {
@Override
public void accept(User user) throws Exception {
//do what you want this the user
}
});下面的代码将在一个新线程中执行操作,并按下主线程上的回调。
发布于 2017-08-08 11:00:03
如果需要递归,则应该使用concatMap()。此方法将确保您按指定的顺序进行多个调用。flatMap()是比较随机的。
您可以查看有关此链接的更多信息。
https://stackoverflow.com/questions/45566279
复制相似问题