Dan*_*ood 5 java future java-8
我有两个函数,每个函数都返回CompletebleFuture<Boolean>实例,我希望or它们进入一个有序且可短路的未来。
public CompletableFuture<Boolean> doA();
public CompletableFuture<Boolean> doB();
Run Code Online (Sandbox Code Playgroud)
非未来代码(即仅返回布尔值)将是
return doA() || doB();
Run Code Online (Sandbox Code Playgroud)
当返回类型是CompletableFuture<CompletableFuture<Boolean>>实例时,使用期货我已经达到了这一点。
doA.thenApply(b -> {
if (!b) {
return doB();
} else {
return CompletableFuture.completedFuture(b);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使这个扁平化?或者,以任何方式可以使返回类型为CompletablyFuture<Boolean>?
编辑:注意,能够使期货短线是我想要的功能。我知道我要依次运行计算,但是没关系。我不希望运行doB时doA返回true。
只需使用该方法thenCompose而不是thenApply:
CompletableFuture<Boolean> result = doA().thenCompose(b -> b
? CompletableFuture.completedFuture(Boolean.TRUE) : doB());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1813 次 |
| 最近记录: |