2017-08-08 204 views
1

我正在使用Retrofit和RxAndroid。现在我想调用api来获取用户信息,然后使用这些信息作为参数来调用另一个API来获取更多信息。 我该怎么做才能达到这个目的?RXAndroid:可观察等待另一个可观察的完成

P/S:它可以回调做,但我想与RX-Android的风格

回答

3

您可以使用flatMap该做的事。

伪代码:

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

    }, error -> { 

    }); 
+0

它工作。非常感谢你 –

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

下面的代码会做的动作在一个新的线程,并且会打回调主线程。

0

如果你想递归,你应该使用concatMap()。此方法将确保您按指定的顺序进行多个呼叫。 flatMap()更随机。

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

相关问题