当前位置: 首页 > 知识库问答 >
问题:

混合两个单声道并将第一个单声道与第一个体内的第二个单声道返回

扈翰
2023-03-14

我面临的情况是,我必须使用2 Mono,其中第二个将依赖于第一个的Id字段,并在第一个Mono的主体中返回第二个的响应。

例如:

Mono<Article> first = fetchArticleById(id);

Mono<Rating> second = fetchRating(article.getRatingId()); //here I will use the response from 
first Mono,

然后将结果返回为

/* this is the response of first Mono, the rating field is set by second Mono */
Article {
"id":1234,
"text" : "some text",
"rating" : "5 star", //fetched from second Mono
"ratingId":qq11
}

我试过了

first.map(art -> {
 return fetchRating(art.getRatingId());
});

但像这样,我只能返回第二个单声道的响应。

通过尝试Map或Flatmap,它只在第二个单声道上起作用。

请提出建议。

共有1个答案

戚兴思
2023-03-14
fetchArticleById(id)
  .flatMap(art -> fetchRating(art.getRatingId())
    .map(rating -> new Pair(art, rating))); 

在映射功能中,您可以访问文章和评级,因此可以根据需要连接它们。

 类似资料:
  • 我最近一直在学习使用Java中的reactor库和Spring框架进行反应式编程,并且在很大程度上我已经能够掌握它。然而,我发现自己有好几次遇到同样的情况,我想知道我哪里出了问题。 我正在努力解决的问题的要点是,我经常想用mono做一些事情,比如找到一些补充数据,然后将其添加回原始mono中。zip函数在我看来是一个理想的候选函数,但最终我订阅了两次原始mono,这不是我的意图。 这里有一个人为的

  • 我想根据一些条件将结果从两个单声道组合起来。这两个单声道都是网络客户端调用的结果: 第一个是期望快速响应的单个呼叫。 第二个是几个响应缓慢的电话的组合。 如果第一个单声道的结果满足某些条件,则“取消”第二个单声道的想法可以节省时间并避免不必要的网络调用。如果第一个单声道的结果不够,请使用第二个单声道。 一个静态编程语言代码示例来解释我的想法: 更新: 更清楚的是,让我们假设平凡的结果在1秒内出现,

  • 我想创建一个SpringWebFlux服务,它将两个源的数据与一个依赖项相结合。我是Webflux的新手,所以我不知道怎么做。下面是一些伪代码来说明我要做的事情: 的结果包括我想用查找的数据的标识符。至少我想处理这两个数据集。我可以使用什么方法代替第一个?

  • webflux包中发生了有趣的事情。然而,我在源头的旅程并没有解决以下问题。 假设我有以下单声道(或通量): 我在webfilter中使用类似的构造,用租户和用户数据丰富管道。然后在控制器中使用如下构造: hello mono的上下文填充在world mono中。我试图弄清楚这是如何做到的,也是为了单元测试的目的。 最后,这仍然是一个谜。我试图用单声道/通量对象上可用的常规方法来做到这一点,但是我

  • 嗨我刚开始学习反应式编程 我这里有这段代码,我的过程应该是我将调用TokenRepository来获取令牌,然后使用token.getAccessToken()作为cardRepository.findAllCards()上的参数 想知道这是否可行吗?

  • 我有一个包含16个音频单声道流的MXF文件,我需要将其重新编码到一个mp4文件中,该文件包含2<=n<=16个合并输入流的声道,例如,输出声道1上的输入声道1和2,输出声道2上的输入声道9和10。这项工作将用FFMPEG完成。我阅读了文档,发现amerge和amix滤波器会很好,但它们只输出一个通道。这个问题有什么解决办法吗? 谢谢,劳拉