RXJava持久保存前一个flatMap的返回值

时间:2017-09-12 05:44:54

标签: java rx-java

在RX JAVA(java8)中,如何保留之前flatMapmap的值。

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

因此,在上面的代码中,在第二个flatMap中,如何从之前的token获取flatMap

1 个答案:

答案 0 :(得分: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));