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

如何将两个Flux对象组合成一个

慕阳文
2023-03-14

首先,我对反应式编程有点陌生。在参加了一些关于reactor和spring 5.0的演讲后,我想自己尝试一下这个编程模型。

我有一个应用程序,它使用WebClient从不同的API构建两个Flux对象。我想将这2个对象组合成一个并将其返回给用户

代码示例如下所示:

public class User {
  private String username;
  //getters and setters
}

public class Address {
  private String street;
  //getters and setters;
}

public class CompleteUser {
  private String username;
  private String address;
  //getters and setters
}

现在在我的handler方法中:

final Flux<User> = WebClient.create()...;
final Flux<Address> = WebClient.create()...;
final Flux<CompleteUser> = //somehow compose this two types into one

我应该使用反应器API中的什么方法来实现这一点?我找到了一些方法来组合像组合最新的对象,但是在这种情况下,我想用第二个Flux的第一个项目等来完全组合第一个Flux的第一个项目。

共有1个答案

鲁浩渺
2023-03-14

Flux.zip静态方法正是您要寻找的。对于2个源的组合,您可以提供BiFunction来生成结果。

Flux<CompleteUser> complete = Flux.zip(fluxUser, fluxAddress, (u, a) -> new CompleteUser(u, a));
//if the ctor perfectly matches, you can also use CompleteUser::new
 类似资料:
  • 假设我有如下两个通量: 现在我想把这些通量组合成一个通量或者两个通量的元组,在一个通量中包含两个通量元素。 我使用zipwith方法尝试了以下操作: 但是这给出了一个编译时错误: 我怎样才能做到这一点?请建议。

  • 主要的问题是第五次会议的形式是什么

  • 问题内容: 我的dao页面正在从两个不同的字段接收日期和时间,现在我想知道如何将这些日期和时间合并到一个对象中,以便我计算时差和总时间。我有要合并的这段代码,但是它在我在此代码中做错的工作不起作用,请帮助。 问题答案: 您只需要使用正确的方法,而不是调用构造函数即可。使用创建本地日期和本地时间对象,那么这两个对象传递给方法: 编辑 显然,您需要组合两个对象而不是2个字符串。我想您可以先使用将两个日

  • 我需要从 5 个对象的集合中获取 7 个对象的所有可能组合。没有重复的组合(选择的顺序无关紧要,即以不同顺序选择的相同对象被视为相同的组合)。 我已经实现了,它工作正常并产生了正确的结果: 输出正确:找到了21个正确的组合。 但是它使用了一个按位运算符,在我看来,它的可读性、可维护性和可扩展性都不是很好。我想将它重构或完全重写为一种更加灵活和易于理解的面向对象的方法。我对如何使用OOP和递归实现这

  • 问题内容: 有没有一种快速的方法来将一个数组的值组合为另一个数组的键? 输入: 预期产量: 我该怎么办? 问题答案: 会完全按照您的意愿做。 引用手册: 通过将keys数组中的值用作键,并将values数组中的值用作对应值来创建数组。 对于您的情况,您必须执行以下操作: 当然,您也可以使用各种循环组合来做到这一点,这可能是最简单的解决方案。

  • 问题内容: 我试图在我的类中有一个默认对象,它具有可接受的默认属性,并让开发人员通过指定另一个对象来覆盖其中的一些默认属性,但是我找不到一种很好的方法来做到这一点。 预期的用法如下: 问题答案: 实现该接口,因此您 可以 按原样对待它,并使用诸如添加another的内容之类的方法。 但是,如果您将其视为地图,则需要非常小心: 因为它 看起来 像一个复制构造函数,但事实并非如此,这常常使人们感到 困