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

项目Reactor-如何结合一个单一和一个通量?

贺乐意
2023-03-14

我有一个通量和单值,我不知道如何组合它们,以便在通量的每一项中都有单值。

我正在尝试这种方法,但它不起作用:

Mono<String> mono1 = Mono.just("x");
Flux<String> flux1 = Flux.just("{1}", "{2}", "{3}", "{4}");

Flux.zip(mono1, flux1, (itemMono1, itemFlux1) ->  "-[" + itemFlux1 + itemMono1 + "]-").subscribe(System.out::println);

The outcome that I'm getting is -[{1}x]-

How could I combine them in order to get -[{1}x, {2}x, {3}x, {4}x]-?

共有1个答案

卫高明
2023-03-14

虽然凯文·胡西的解决方案是正确的,但我认为最好换一种方式:

Mono<String> mono1 = Mono.just("x");
Flux<String> flux1 = Flux.just("{1}", "{2}", "{3}", "{4}");
mono1.flatMapMany(m -> flux1.map(x -> Tuples.of(x, m))).subscribe(System.out::println);

这样,您就有一个对mono1的订阅,而不是为flux1的每个值创建一个订阅。参见flux.flatmap()方法文档中的大理石图。

正如Alan Sereb所建议的,我使用的是元组。

 类似资料:
  • 问题内容: 我有两个在android studio中制作的单独的android应用程序项目,我正在尝试将项目1合并到项目2中,以使其全部成为一个应用程序,我该怎么做呢?我知道如何在Eclipse中做到这一点,但在android studio中却不行。请注意,这两个项目都是android应用程序,都不是android库。 任何帮助都将是惊人的! 当我将项目1导入到项目模块中时,在生成成绩时出现此错误

  • 我的Firebase数据是这样组织的: 如何通过名称检索客户? 名称保证是唯一的。 这是我的客户服务,目前: 我应该在每个findByName()调用中扫描所有客户吗? 还是应该构建一个类似“二级索引”的东西? 拜托,一些建议,我才刚刚开始...-(

  • 我有两个独立的android应用程序项目,它们都是在android studio中制作的。我正在尝试将项目1合并到项目2中,使其成为一个应用程序。我该怎么做呢?我知道如何在eclipse中完成,但不知道如何在android studio中完成。请注意,这两个项目都是android应用程序,没有一个是android库。 任何帮助将是惊人的! 当我将项目1导入项目模块时,我在年级生成中遇到以下错误:

  • 我正在构建一个定制的Java库。我把我的大部分“重复”代码都保存在那里,比如文件处理、字符串处理等。每次我想使用它们时,我都必须将该类复制并粘贴到我正在进行的其他项目中。有没有办法让这个自定义库类成为“依赖项”?我在用我的智能手机。

  • 如何才能一个人做一个项目? 因为我尝试了,一个人做项目,会懒惰,会不知道下一步做什么。 如果是一个团队做,还有项目进度表、项目管理,分工合作。 但是如何一个人做出一个项目?

  • 我试图创建一个垂直轮播,显示上一个和下一个项目。 我能得到这样的东西: 肖特 风景 如您所见,横向模式已经显示下一个和项目之前。我想在竖屏中获得相同的结果。这是我使用的代码: activity_main.xml: SliderItem: 滑块适配器: 主要活动: 希望你能帮助我