Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java中的另一个CompletableFuture的应用返回一个CompletableFuture?_Java_Promise_Future_Chaining_Completable Future - Fatal编程技术网

如何从Java中的另一个CompletableFuture的应用返回一个CompletableFuture?

如何从Java中的另一个CompletableFuture的应用返回一个CompletableFuture?,java,promise,future,chaining,completable-future,Java,Promise,Future,Chaining,Completable Future,我不熟悉Java中的CompletableFuture概念,所以除了thenApply 我有一个要求,即我必须测试中的某些条件,然后应用可完成的未来a的块。如果满足条件,则返回null,否则返回另一个CompletableFutureB,以便在下一个中应用,结果将是B 基本上,我正在尝试做如下事情: CompletableFuture<String> A = ...... CompletableFuture<Boolean> B = ...... A.thenApply

我不熟悉Java中的
CompletableFuture
概念,所以除了
thenApply

我有一个要求,即我必须测试
中的某些条件,然后应用
可完成的未来
a
块。如果满足条件,则返回null,否则返回另一个
CompletableFuture
B,以便在下一个
中应用
,结果将是B

基本上,我正在尝试做如下事情:

CompletableFuture<String> A = ......
CompletableFuture<Boolean> B = ......

A.thenApply((res) -> {
  if (res.equals("hey")) {
   return null;
  } else {
   return B;
  }
})
.thenApply((bResult) -> { // At this point, I want it to act as if I was calling B.thenApply

   //some function;
})
CompletableFuture A=。。。。。。
可完成的未来B=。。。。。。
A.然后申请((res)->{
如果(res.equals(“hey”)){
返回null;
}否则{
返回B;
}
})
.thenApply((bResult)->{//此时,我希望它的行为就像我正在调用B.thenApply一样
//某些功能;
})
这可能吗?我是否可以从另一个
CompletableFuture
返回
CompletableFuture
,以便链上的下一个
thenApply
实际上是返回的
CompletableFuture
thenApply


此外,如果要取消下一个
,请在某些条件下应用
s。我该怎么做呢?

你能用番石榴汁吗?如果你想要一个可上市的未来,而你的“thenApply”是番石榴的期货。那么你可以
返回B.join()
,这会产生这种效果。但是如果返回
null
(即“hey”case),您也会继续。看起来您需要
然后编写
。但要使用它,您必须重新考虑返回
null
…>的习惯。我可以从另一个可完成的未来返回一个可完成的未来吗?:是的,您可以像
CompletableFuture
CompletableFuture
(resp.
…>
)…那样声明它。在
(等价于
)的情况下,您可以执行实例检查(
instanceof
或等价物),并相应地对其进行转换和处理(如
字符串/布尔值/CompletableFuture
)@Holger Thencomose正是我想要的。谢谢。你能用番石榴汁吗?如果你想要一个可上市的未来,而你的“thenApply”是番石榴的期货。那么你可以
返回B.join()
,这会产生这种效果。但是如果返回
null
(即“hey”case),您也会继续。看起来您需要
然后编写
。但要使用它,您必须重新考虑返回
null
…>的习惯。我可以从另一个可完成的未来返回一个可完成的未来吗?:是的,您可以像
CompletableFuture
CompletableFuture
(resp.
…>
)…那样声明它。在
(等价于
)的情况下,您可以执行实例检查(
instanceof
或等价物),并相应地对其进行转换和处理(如
字符串/布尔值/CompletableFuture
)@Holger Thencomose正是我想要的。谢谢