在不改变未来的情况下链接未来的正确方法是什么?
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))
假设我有 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))