我有一个期货和一个期货清单,
CompletionStage<ParentEntity> p;
List<CompletionStage<ChildEntity>> cList;
我只知道一个列表,我就能做到
CompletableFuture.allOf(cList).thenSomething( ...
并使用.join()
来获取每个完成的未来。
因此,我当然可以将p
和cList
合并到一个列表中,并简单地将索引0视为父级将来。但是,有没有一种方法可以让我对lambda参数更加明确:
CompletableFuture.foo(p, cList).thenBar((parentEntity, childEntityList) -> ...
或者,随便。只是“记住”列表的第一个索引意味着某些特殊含义,似乎并不正确。
答案 0 :(得分:0)
假设我说对了,请尝试使用此方法:
p.thenCombineAsync(allOf(cList), (pEntity, cEntities) -> {
// do something
});
答案 1 :(得分:0)
诀窍是在两个期货上thenCombine
:一个期货和一个allOf
期货(由各种图书馆提供)。
我决定使用Spotify's allAsList
,如下所示:
p.thenCombine(allAsList(cList),
(pEntity, cEntities) -> {
// ...
}
);
我确定其他库也提供相同的库。我的代码库刚好已经在使用这一代码。