У меня есть две функции, каждая из которых возвращает CompletebleFuture<Boolean>
экземпляров, и я хочу or
их объединить в одно упорядоченное и короткозамкнутое будущее.
public CompletableFuture<Boolean> doA();
public CompletableFuture<Boolean> doB();
Не будущий код (т.е. возвращающий только логические значения) будет просто
return doA() || doB();
Используя фьючерсы, я достиг этой точки, когда возвращаемый тип является экземпляром CompletableFuture<CompletableFuture<Boolean>>
.
doA.thenApply(b -> {
if (!b) {
return doB();
} else {
return CompletableFuture.completedFuture(b);
}
}
Есть ли способ сгладить это? Или каким-либо образом я могу сделать возвращаемый тип CompletablyFuture<Boolean>
?
Изменить: обратите внимание, что возможность короткого замыкания фьючерсов - это функция, которую я хочу. Я знаю, что тогда я выполняю вычисления последовательно, но это нормально. Я не запускаю doB
, когда doA
возвращает true.
applyToEither
, чтобы использовать результатdoA
вdoB
29.04.2014