我有未来和期货清单,
CompletionStage<ParentEntity> p;
List<CompletionStage<ChildEntity>> cList;
我知道只是一个清单,我能做到
CompletableFuture.allOf(cList).thenSomething( ...
并使用.join()
来完成每个完成的未来。
所以我当然可以将p
和cList
组合成一个列表,并简单地将索引0视为父母的未来。但是,有没有一种方法可以更明确地使用lambda参数,例如:
CompletableFuture.foo(p, cList).thenBar((parentEntity, childEntityList) -> ...
管他呢。只是“记住”列表的第一个索引意味着一些特殊的东西,似乎并不正确。
假设我说得对,试试这个:
p.thenCombineAsync(allOf(cList), (pEntity, cEntities) -> {
// do something
});
问题是thenCombine
关于两个未来:一个未来,一个allOf
未来(各种图书馆提供)。
我决定使用Spotify's allAsList
,像这样:
p.thenCombine(allAsList(cList),
(pEntity, cEntities) -> {
// ...
}
);
我相信其他图书馆提供相同的。我的代码库恰好已经在使用这个了。