我正在尝试创建多个List 类型的CompletionStage,例如。CompletionStage<List<Car>>
. 最后,我想在一个CompletionStage中将所有类型的响应合并<List<Car>>
到一个 List 中。
CompletionStage<List<Car>> completionStageOne= carClientOne.getCarList();
CompletionStage<List<Car>> completionStageTwo= carClientTwo.getCarList();
CompletionStage<List<Car>> completionStageThree= carClientThree.getCarList();
所以在这里,假设我有 3 种不同的服务,它们会给我不同的汽车列表作为响应形式CompletionStage<List<Car>>
现在我正在尝试将它们结合起来并创建一个通用的汽车列表,这里我遇到了问题。我正在使用下面的代码来组合结果
CompletionStage<List<Car>> completionStageOneTwo = completionStageOne
.thenCombine(completionStageTwo,(x, y) -> Stream.concat(x.stream(), y.stream()).collect(Collectors.toList()));
//above will work but if I add the third one then it will not.
CompletionStage<List<Car>> completionStageFinal = completionStageOneTwo
.thenCombine(completionStageThree,(x, y) -> Stream.concat(x.stream(), y.stream()).collect(Collectors.toList()));
最后我在做
List<Car> finalList = completionStageFinal.toCompletableFuture().get();
那么我做错了什么?我怎样才能将这三个结合起来?我在阻止什么吗?
注意:我已经从 Holger 检查了这个答案,但无法弄清楚如何在那里使用 concat 。