将第一个CompleteableFuture的结果传递到链中的另一个CompletableFuture

时间:2019-05-15 13:27:17

标签: java asynchronous completable-future

我有一个异步方法,该方法返回CompletableFuture<ClassA>

private CompletableFuture<ClassA> asyncA(..)

我正在公开一个公共方法,该方法必须返回基于类A的数据的CompleteableFuture<ClassB>。此方法的调用者应该不知道ClassA:

return asyncA(..)
       .thenApply(objectA -> return new ObjectB(objectA.getName());

到目前为止,一切都按预期进行。

现在,我想在出现ObjectB结果并调用void方法asyncC之后执行异步操作,并且我想以某种方式将其传递给objectA:

return asyncA(..)
       .thenApply(objectA -> return new ObjectB(objectA.getName())
       .thenRunAsync(asyncC(objectA));

但是似乎objectA中没有定义thenRunAsync

是否可以执行这种操作?

1 个答案:

答案 0 :(得分:0)

因此我们提出了以下解决方案:

return asyncA(..)
   .thenApply(objectA -> {
       CompletableFuture.runAsync(() -> asyncC(objectA));
       return new ObjectB(objectA.getName())
      })