2016-12-16 14 views
0

私は How to combine 3 or more CompletionStages?のコードを調べましたが、この投稿ではCompletableFuturesからのCompletedタスクのみが組み合わされています。完成したCompletableFutureに非同期CompletableFutureを結合する方法は?

どのように非同期CompletableFutureをCompleted CompletableFutureと組み合わせて、結果がまだ計算されていないcompletableFutureからの結果を結合することができますか?

+3

なし先物が完了しているかどうかに依存していないかではありません。 – Holger

答えて

0

あなたはCompletableFutureオブジェクトに任意の通常のデータを変換するためにCompletableFuture.completedFutureを使用して、非同期操作の結果を組み合わせることCompletableFutureからthenComposeを使用することができます。サンプルコード:getUserDeatils(のuserIdが)ようなことができ

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

:リンク問題のコードの

CompletableFuture<User> getUserDeatils(long userId) { 
    // some async code to load user details 
} 
関連する問題