RXJava 保留先前 flatMap 的返回值

Min*_*aze 0 java rx-java

在 RX JAVA(java8) 中,如何保留 previousflatMapmap.

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);
            );
}
Run Code Online (Sandbox Code Playgroud)

所以在上面的代码中,第二步flatMap我怎样才能token从之前的flatMap.

Flo*_*own 5

您必须压缩帐户和令牌并将其传递到下一个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));
Run Code Online (Sandbox Code Playgroud)