当前位置: 首页 > 知识库问答 >
问题:

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

芮瑾瑜
2023-03-14

我有一个异步方法,它返回completablefuture

private CompletableFuture<ClassA> asyncA(..)

我将公开一个公共方法,该方法必须返回基于类a的数据的completeablefuture 。此方法的调用方不应该知道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个答案

斜瑞
2023-03-14

于是我们想出了这样的解决方案:

return asyncA(..)
   .thenApply(objectA -> {
       CompletableFuture.runAsync(() -> asyncC(objectA));
       return new ObjectB(objectA.getName())
      })
 类似资料:
  • 问题内容: 有没有办法在Redis中将一个函数的返回值传递给另一个函数?当然,如果您使用的是语言包装器(如Ruby),这很容易-但是从CLI来看又如何呢? 例如这样的东西,bash风格 或类似的东西 将返回键列表,但是我不知道如何获取这些键的所有值。 有什么想法吗? 问题答案: 在CLI中,您只需要让Shell完成其工作即可。 请注意,由于其线性复杂性,因此不应在应用程序中使用keys命令。

  • 问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。

  • 问题内容: 我有两节课。和。 我有一个要在中使用的功能。我当时正在考虑将的引用传递给的构造函数,然后再调用该函数。 那行得通吗?有人可以给我举个例子吗? 提前致谢! 问题答案: 是的,它将起作用。这是一种不错的方法。您只需传递A类的 实例 : 然后您可以拥有:

  • 问题内容: 我刚开始使用快速语言,并且知道这个问题是重复的。我发现了几个类似的问题和答案,但我无法弄清这个问题。 我想将ScandString变量的值从ScanViewController传递给ResultViewController。 ScanViewcontroller如下: ResultViewController如下: println(detectedString)没有给我任何结果。问题是

  • 问题内容: 我有一个外部面板,在外部面板上有另一个jPanel。 如果我在内部面板上单击鼠标右键,则应该执行外部面板的右键单击操作。如果我确实在内部面板上单击鼠标左键,则应该发生其自身内部面板的点击动作。 是否可以将点击事件从一个面板传递到另一面板? 问题答案: 要解决此问题,您需要解决许多问题。 首先是要了解鼠标事件与创建它的组件有关,尤其是位置信息。单击点是相对于源组件x / y位置的偏移量(

  • 我是selenium初学者,只是想把webDriver传递给另一个类,但没有成功。程序应该打开浏览器(“Google”)并在主类中键入一些单词,在第二个类中应该按下“Google”按钮。 以下是我的主要课程: 这是我想从主驱动程序中使用的类。 当我运行它时,它对我说: 传递:main失败:printOnScreen java.lang.NullPointerException 我做错了什么?谢谢高