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

单声道如何订阅

廉宇
2023-03-14

我正在尝试创建以下链:

Mono<Object1> oneMono = Mono.just("1");
Mono<Object2> twoMono = Mono.just("2");

Mono<Mono<Object5>> resultMono = Mono.zip(oneMono, twoMono, (one, two) -> { 

    Mono<Object3> threeMono = Mono.just("3");
    Mono<Object4> fourMono = Mono.just("4");

    return Mono.zip(threeMono, fourMono, (three, four) -> {
        return "5";
    }
}) // get just Mono<Object5> here?

resultMono.subscribe(mono -> { 
    mono.subscribe();  // ugly double subscribe() !!
});

因此,我需要得到5。但是在执行1,2和3之前,4。

代码运行正常,但我想退出

Mono

Mono

是否有一个模拟平面图为Zip?


共有1个答案

濮阳鸿卓
2023-03-14

你已经有了。您只需要使用flatMap:

Mono<String> oneMono = Mono.just("1");
Mono<String> twoMono = Mono.just("2");

Mono.zip(oneMono, twoMono, (one, two) -> {
    Mono<String> threeMono = Mono.just("3");
    Mono<String> fourMono = Mono.just("4");

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

  • 我的代码如下。我需要从mongo db获得每次旅行的车费,然后将每次旅行的所有车费相加,得到总车费。我被一种我不知道如何阅读的单声道音乐所困扰。我试着把它转换成通量,但我得到了通量 "'

  • 我试图实现一些东西作为“竞赛条件”。这个竞赛条件必须遵循这些情况: 同时触发两个HTTP调用。 返回第一个成功完成的调用的响应。 处理最后一个呼叫。(这里最重要的是我不能丢弃最后一个呼叫,我确实需要处理它的结果:无论它的状态、成功或失败)。 此代码示例是我实现的解决方案中最接近的一个: 在这个例子中,我使用了Flux.first方法,它帮助我返回了第一个调用,但是它丢弃(取消)了第二个调用,这是一

  • 我有两项要求: 有了这些,我想做以下工作: 当我调用它时,我得到以下输出: 当然,由于异步单声道映射,流在结果实际出现之前就关闭了。我怎样才能保持这个非阻塞,但也确保结果在调用上完成之前到达?

  • 给定以下monos: 双: 和: 具有相同的输出: 和之间有什么区别,在这种情况下? 从https://projectreactor.io/docs/core/release/reference/index.html#which-operator: [如果你]有一个序列,但[你]对值不感兴趣,并且[你]想在最后切换到另一个单声道,[使用]。 [如果您]希望通过将发布者从1个Mono和任何源端协调到

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