在不改变未来的情况下链接未来的正确方法是什么?

What is proper way to chain a future without transforming it?

假设我有 2 个函数 return 一种 Future。

ListenableFuture<User> createUser();

CompletableFuture<BillingAccount> createBillingAccount(User user);

我需要 运行 createUser() 在 运行 宁 createBillingAccount 之前,因为这取决于创建的用户。

但是,我想要 return 用户,而不是 billingAccount。

通常,我会使用 Futures.transformAsync(createUser(), user -> createBillingAccount(user)),但这会 return BillingAccount。我想return一个用户。

在不阻塞的情况下,我还能在这里做什么?

您可以简单地执行 future,然后对用户执行 thenApplyAsync 和 return,这样您就 returning 了 User 的 future,并丢弃了账单,就像这样:

Futures.transformAsync(createUser(), user -> createBillingAccount(user).thenApplyAsync(b -> user))