RXAndroid:Observable等待另一个可观察的完整

时间:2017-08-08 10:48:23

标签: android reactive-programming rx-android

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

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

3 个答案:

答案 0 :(得分:2)

您可以使用flatMap

的伪代码:

apiService.getUser()
    .flatMap(user -> apiService.getUserMessages(user.getId()))
    .subscribe(messages -> {

    }, error -> {

    });

答案 1 :(得分:0)

您可以这样做:

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
                    }
                });

以下代码将在新线程中执行操作,并且会在主线程上点击回调。

答案 2 :(得分:0)

如果您想要递归,则应使用concatMap()。此方法将确保您按指定的顺序进行多次调用。 flatMap()更随机。

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