0

我有以下方法:

 public Uni<JsonObject> getHMOStats(String outcode);

这将返回一个 Uni,该值需要在此方法创建的 OutcodeStats 对象中设置:

 private Multi<OutcodeStats> getOutcodeStats() {
        return Multi.createFrom().items(UkRegions.values())
                .invoke(region -> log.infof("Fetching stats for region %s", region.name()))
                .flatMap(region -> outcodeStatsService.getByRegion(apiKey, region.name()).toMulti())
                .flatMap(regionStats -> Multi.createFrom().items(regionStats.getData().stream()))
                .invoke(outcodeStats -> log.infof("Processing %s", outcodeStats.getOutcode()))
                .map(this::setEffectiveDate)
                .map(outcodeStats -> outcodeStats.setHmoStats(hmoService.getHMOStats(outcodeStats.getOutcode()))))  <--- PSEUDO CODE

    }

不幸的是,我不知道如何将两者结合起来以设置hmoStatsOutcodeStats 对象的属性。

一种解决方案可能是getHMOStats不返回 Uni,但我不认为这是要走的路。

感谢您的关注。

4

1 回答 1

1

我想你想做

                .onItem()
                .transformToUniAndMerge(outcodeStats ->
                        hmoService.getHMOStats(outcodeStats.getOutcode())
                                .onItem()
                                    .transform(hmoStats -> {
                                        outcodeStats.setHmoStats(hmoStats);
                                        return outcodeStats;
                                    }
                                ));
于 2022-01-11T20:14:17.697 回答