如何从Java中的另一个CompletableFuture的应用返回一个CompletableFuture?
我不熟悉Java中的如何从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
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正是我想要的。谢谢