我正在使用Java 8应用程序.我有3个返回CompletionStage的方法:
> CompletionStage< Edition> editionService.loadById(editionId);
> CompletionStage< Event> eventService.loadById(eventId);
> CompletionStage< List< EditionDate>> editionDateService.loadByEditionId(editionId);
以及将这些值合并为结果的方法
> CompletionStage< Result> getResult(版本,事件,List< EditionDate> editionDates)
方法1和3可以独立运行,但是方法2的调用取决于方法1的结果.显然,方法4取决于所有方法的运行.我的问题是,使用CompletableFuture api调用这些方法的最佳方法是什么?这是我能想到的最好的方法,但是我不确定这是最好的方法:
editionService.loadById(editionId)
.thenCompose(edition -> eventService.loadById(edition.getEventId()))
.thenCombine(editionDateService.loadByEditionId(editionId),
(event, editionDates) -> getResult(edition, event, editionDates) );
但是这样一来,我将无法获得我的版本结果,因此我有点茫然.我应该使用的任何我没有考虑的方法?