Return Lambda 从 Java 中的方法返回值

Return Lambda returned value from Method in Java

public DetailsResponse common(String customerId, String personId) {
        Capabilities capabilities = new Capabilities();
        Details details = new Details();
        DetailsResponse detailsResponse = new DetailsResponse();
        consume("590204", "4252452")
                .map(items -> items.get(0))
                .flatMap(item -> {
                    return  actions("432432", "1241441")
                            .map(ev -> {
                                 switch (item.getCriticality()) {
                                    case "HIGH":
                                     case "VERY HIGH":
                                         capabilities.setBan_hash("false");
                                        capabilities.setI("false");
                                        capabilities.setK("false");
                                       details.setCriticality(item.getCriticality());
                                        details.setHostname(item.getNames().get(0).getName());
                                        detailsResponse.setCapabilities(capabilities);
                                        detailsResponse.setDetails(details);
                                       
                                        return detailsResponse;
                                     default:
                                        capabilities.setk(ev.get(con.getAlertCapabilitiesAndAssetDetails().getFields().get()));
                                        capabilities.setI(ev.get(con.getAssetDetails().getFields().get()));
                                        capabilities.setl(ev.get(con.getAlertCapabilitiesAndAssetDetails().getFields().get()));
                                        details.setCriticality(item.getCriticality());
                                        details.setHostname(item.getNames().get(0).getName());
                                        detailsResponse.setCapabilities(capabilities);
                                        capabilitiesAndAssetDetailsResponse.setDetails(asset);
                                        detailsResponse.setDeviceid("");
                                        
                                        return detailsResponse;
                                }
                            });
                }).subscribe();
         return detailsResponse;
    }

这里的问题是如何 return 值 return 在地图中由 lamda 编辑为方法 return 值作为由 lamda 编辑的值 return 的范围仍然存在在 lamda 范围内而不是方法范围内。

如果您需要在请求二之前完成请求一,您可以使用 zipWith to combine both results and you will get returned a tuple2 or you can use zipWhen

public Mono<DetailsResponse> common(String customerId, String personId) {
    return consume("590204", "4252452").zipWith(actions("432432", "1241441"))
            .flatMap(responses -> {
                final item = responses.getT1();
                final ev = responses.getT2();

                final Capabilities capabilities = new Capabilities();
                final Details details = new Details();
                final DetailsResponse detailsResponse = new DetailsResponse();

                switch (item.getCriticality()) {
                    case "HIGH":
                    case "VERY HIGH":
                        ...
                    return detailsResponse;
                    default:
                        ...                  
                    return detailsResponse;
                }
            });
}