我正在寻找有关链接多个CompletableFutures方法的建议。
假设我需要执行3次操作。
假设地,我的方法是这样的:
public static CompletableFuture<Long> searchMaster() {
return CompletableFuture.supplyAsync (() -> 100L);
}
public static CompletableFuture<Long> insertIntoMaster() {
return CompletableFuture.supplyAsync (() -> 200L);
}
public static CompletableFuture<Long> insertIntoChildDB() {
return CompletableFuture.supplyAsync (() -> 300L);
}
现在我的要求是:
第一个方法返回一个id。 我将那个id传递给第二种方法。 如果第二个方法成功返回了CompletableFuture的结果,则该基本标识将传递给第三个方法,该方法将在子表中插入一些数据。
如何使用JDK8 CompletableFutures进行链接。
答案 0 :(得分:1)
使用thenCompose()方法之一,该方法可以使期货变平,就像Stream.flatMap()变平流一样:
CompletableFuture<Long> future = searchMaster()
.thenCompose(id -> insertIntoMaster(id))
.thenCompose(primaryId -> insertIntoChildDB(primaryId));