2017-09-12 16 views
0

RX JAVA(java8)では、以前のflatMapまたはmapの値をどのように保持できますか?RXJavaは以前のflatMapの戻り値を保持します

public void createAccount(]) { 
    JsonObject payload = routingContext.getBodyAsJson(); 
    socialService.getOAuthToken(payload) 
      .flatMap(token -> { 
       return getAllAccounts(token); 
      }) 
      .flatMap(accounts -> { 
       // Save accounts with TOKENS 
      }) 
      .subscribe(accountID -> { 
        response(accountID); 
      ); 
} 

は、したがって、上記のコードでは、第2 flatMapにどのように私は前flatMapからtokenを得ることができます。

答えて

3

アカウントとトークンを圧縮して、次のStream操作に渡す必要があります。

//Note you have to replace T, A with the right type 
socialService.getOAuthToken(payload).flatMap(token -> getAllAccounts(token) 
     .map(account -> new SimpleImmutableEntry<T, A>(token, account))) 
    .flatMap(accounts -> /* accounts.getKey() -> token, accounts.getValue() -> account */) 
    .subscribe(accountId -> response(accountId)); 
+0

これはうまくいきました。 –

関連する問題