我正在使用Retrofit和RxAndroid。现在我想调用api来获取用户信息,然后使用这些信息作为参数来调用另一个API来获取更多信息。 我该怎么做才能达到这个目的?RXAndroid:可观察等待另一个可观察的完成
P/S:它可以回调做,但我想与RX-Android的风格
我正在使用Retrofit和RxAndroid。现在我想调用api来获取用户信息,然后使用这些信息作为参数来调用另一个API来获取更多信息。 我该怎么做才能达到这个目的?RXAndroid:可观察等待另一个可观察的完成
P/S:它可以回调做,但我想与RX-Android的风格
您可以使用flatMap该做的事。
伪代码:
apiService.getUser()
.flatMap(user -> apiService.getUserMessages(user.getId()))
.subscribe(messages -> {
}, error -> {
});
你可以做这样的事情:
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
}
});
下面的代码会做的动作在一个新的线程,并且会打回调主线程。
如果你想递归,你应该使用concatMap()
。此方法将确保您按指定的顺序进行多个呼叫。 flatMap()
更随机。
您可以检查有关此link的更多信息。
它工作。非常感谢你 –