9

したがって、次の例があると考えてください。

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

});

CompletionStage<CompletionStage<CompletionStage<CompletionStage<Boolean>>>>私の問題は、複数のネストされた未来型全体にあります。CompletionStage<Boolean>Scalaのようなものを使用するだけでそれを減らすことは可能flatMapですか、それとも別の方法がありますか?

4

1 に答える 1