RetrofitとRxAndroidを使用しています。今私は、ユーザー情報を取得するためにAPIを呼び出すと、この情報をパラメータとして別のAPIを呼び出してより多くの情報を取得します。 この目的を達成するにはどうすればよいですか?RXAndroid:Observableが別の観測可能な完了を待つ
P/S:それは、コールバックを行うことができますが、私はRX-Androidのスタイルでやりたい
RetrofitとRxAndroidを使用しています。今私は、ユーザー情報を取得するためにAPIを呼び出すと、この情報をパラメータとして別のAPIを呼び出してより多くの情報を取得します。 この目的を達成するにはどうすればよいですか?RXAndroid:Observableが別の観測可能な完了を待つ
P/S:それは、コールバックを行うことができますが、私はRX-Androidのスタイルでやりたい
あなたはこのためにflatMapを使用することができます。
擬似コード:次のコードは、新しいスレッドで操作を行うと、メインスレッド上でコールバックを打つだろう
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
}
});
:
apiService.getUser()
.flatMap(user -> apiService.getUserMessages(user.getId()))
.subscribe(messages -> {
}, error -> {
});
あなたはこのような何かを行うことができます。
再帰を使用する場合は、concatMap()
を使用してください。この方法では、指定した順序で複数の呼び出しを行うことができます。 flatMap()
はよりランダムです。
これについての詳細はこちらlinkで確認できます。
それは働いた。どうもありがとうございました –