2016-12-16 1 views
0

Я просмотрел следующий код: How to combine 3 or more CompletionStages?, но только в этом посте Выполнено задание из CompletableFutures.Как объединить асинхронный CompletableFuture с завершенным CompletableFuture?

Как я могу объединить асинхронный CompletableFuture с Completed CompletableFuture, чтобы объединить результаты из уже завершенного завершающего Future с тем, результат которого еще не рассчитан?

+3

Ни один из кода в связанном вопросе не зависит от того, завершена или нет фьючерсов. – Holger

ответ

0

Вы можете использовать CompletableFuture.completedFuture конвертировать любые нормальные данные в CompletableFuture объекта, а затем использовать thenCompose от CompletableFuture объединить результаты от асинхронной операции. Пример кода:

long userId = 12345678899L; 
CompletableFuture.completedFuture(userId) 
.thenCompose(userId -> getUserDeatils(userId)) 
.thenAccept(user -> doSomething(user)); 
// or thenApply(user -> doSomething(user)) 

где getUserDeatils (USERID) может быть как:

CompletableFuture<User> getUserDeatils(long userId) { 
    // some async code to load user details 
} 
Смежные вопросы