4
は、だから私は、次の例を持って考える:javaマルチネストされたCompletionStageは、 "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);
});
}
});
});
私の問題は、全体CompletionStage<CompletionStage<CompletionStage<CompletionStage<Boolean>>>>
マルチネストされた将来のタイプです。 ScalaでflatMap
のようなものを使用してそれを単にCompletionStage<Boolean>
に減らすことは可能ですか、それともこれを行う別の方法がありますか?
に注意を払いながら、このコードが何のためにあるのかでプレイフレームワークのために 'thenComposeAsyncは()'代わりに使用すべきであることに留意すべきです適切な実行コンテキスト。 – Blacklight