1. ホーム
  2. java

[解決済み] CompletableFuture|thenApplyとthenComposeの比較

2022-02-16 09:38:48

質問

との違いがよくわからないのですが。 thenApply( ) と thenCompose() .

では、どなたか有効なユースケースを提示していただけませんか?

Javaドキュメントより。

thenApply(Function<? super T,? extends U> fn)

新しい CompletionStage このステージが完了したとき の引数として実行される。 を提供する。

thenCompose(Function<? super T,? extends CompletionStage<U>> fn)

新しい CompletionStage このステージが完了したとき の引数としてこのステージを実行する。 関数を呼び出します。

の第2引数で、"next "と表示されることがわかりました。 thenCompose は、CompletionStage を拡張します。 thenApply にはありません。

どなたか、どのようなケースで thenApply であり thenCompose ?

解決方法は?

thenApply は、同期マッピング機能がある場合に使用します。

CompletableFuture<Integer> future = 
    CompletableFuture.supplyAsync(() -> 1)
                     .thenApply(x -> x+1);

thenCompose は,非同期マッピング関数(すなわち CompletableFuture ). そうすると、ネストしたfutureではなく、結果を直接含むfutureを返します。

CompletableFuture<Integer> future = 
    CompletableFuture.supplyAsync(() -> 1)
                     .thenCompose(x -> CompletableFuture.supplyAsync(() -> x+1));