首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RXAndroid:可观察的等待另一个可观察的完成

RXAndroid:可观察的等待另一个可观察的完成
EN

Stack Overflow用户
提问于 2017-08-08 10:48:23
回答 3查看 866关注 0票数 1

我用的是Retrofit和RxAndroid。现在我想调用api来获取用户信息,然后使用这个信息作为参数来调用另一个api来获取更多的信息。我该怎么做才能达到这个目的呢?

P/S:可以通过回调完成,但我想使用RX-Android风格。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-08 10:52:00

为此您可以使用flatMap

伪码:

代码语言:javascript
复制
apiService.getUser()
    .flatMap(user -> apiService.getUserMessages(user.getId()))
    .subscribe(messages -> {

    }, error -> {

    });
票数 2
EN

Stack Overflow用户

发布于 2017-08-08 10:54:42

你可以这样做:

代码语言:javascript
复制
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
                    }
                });

下面的代码将在一个新线程中执行操作,并按下主线程上的回调。

票数 0
EN

Stack Overflow用户

发布于 2017-08-08 11:00:03

如果需要递归,则应该使用concatMap()。此方法将确保您按指定的顺序进行多个调用。flatMap()是比较随机的。

您可以查看有关此链接的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45566279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档