2017-08-08 9 views
1

RetrofitとRxAndroidを使用しています。今私は、ユーザー情報を取得するためにAPIを呼び出すと、この情報をパラメータとして別のAPIを呼び出してより多くの情報を取得します。 この目的を達成するにはどうすればよいですか?RXAndroid:Observableが別の観測可能な完了を待つ

P/S:それは、コールバックを行うことができますが、私はRX-Androidのスタイルでやりたい

答えて

3

あなたはこのために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 -> { 

    }); 
+0

それは働いた。どうもありがとうございました –

0

あなたはこのような何かを行うことができます。

0

再帰を使用する場合は、concatMap()を使用してください。この方法では、指定した順序で複数の呼び出しを行うことができます。 flatMap()はよりランダムです。

これについての詳細はこちらlinkで確認できます。

関連する問題