我无法理解thenApply(thenCompose()之间的区别。

那么,有人可以提供有效的用例吗?

从Java文档中:

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


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



我知道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));

关于java - CompletableFuture | thenApply与thenCompose,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43019126/

10-09 09:19