So bedenkt, dass ich das folgende Beispiel haben:java multi verschachtelte CompletionStage entspricht "flatMap"?
CompletionStage<String> tokenFuture = getToken();
CompletionStage<CompletionStage<CompletionStage<CompletionStage<Boolean>>>> result = tokenFuture.thenApply(token -> {
WSRequest request = ws.url(url).setHeader("Authorization", "Bearer " + token);
CompletionStage<WSResponse> response = request.post(json);
return response.thenApply(r -> {
if (r.getStatus() == 201) {
return CompletableFuture.supplyAsync(() -> CompletableFuture.supplyAsync(() -> true));
} else {
return getToken().thenApply(t -> {
WSRequest req = ws.url(url).setHeader("Authorization", "Bearer " + t);
return req.post(json).thenApply(b -> b.getStatus() == 201);
});
}
});
});
Mein Problem mit der ganzen CompletionStage<CompletionStage<CompletionStage<CompletionStage<Boolean>>>>
Multi verschachtelten Zukunft Typ ist. Ist es möglich, es auf nur CompletionStage<Boolean>
zu reduzieren, indem man so etwas wie flatMap
in Scala verwendet oder gibt es eine andere Möglichkeit, dies zu tun?
Es sollte beachtet werden, dass für die Play-Framework, das dieser Code ist das, was ist, 'thenComposeAsync()' sollte stattdessen während Aufmerksamkeit verwendet werden, um der richtige Ausführungskontext. – Blacklight