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

如何从MONO/FLUX中提取字符串值-

史弘博
2023-03-14

我是Reactor编程新手,需要MONO/Flux方面的帮助

我有POJO课程

受雇者Java语言

class Employee {
   String name
}

我在访问服务时返回了Mono,我需要从Mono中提取名称作为字符串。

Mono<Employee> m = m.map(value -> value.getName()) 

但这再次返回Mono而不是字符串。我需要从这个Mono中提取String值。

共有2个答案

翟修永
2023-03-14

您应该避免阻塞(),因为它将无限期地阻塞,直到收到下一个信号。

您不应该认为反应容器将为您的程序提供答案。相反,你需要对这个答案做任何你想做的事情。例如:

employeeMono.subscribe(value -> whatYouWantToDoWithName(value.getName()));
阮飞翔
2023-03-14

您应该这样做:

m.block().getName();

此解决方案不考虑空检查。

标准方法是:

Employee e = m.block();
if (null != e) {
   e.getName();
}

但使用flux时,应继续使用以下内容:

Mono.just(new Employee().setName("Kill"))
    .switchIfEmpty(Mono.defer(() -> Mono.just(new Employee("Bill"))))
    .block()
    .getName();

请记住,如果可能,应该避免请求阻塞操作:它会阻塞流

 类似资料:
  • 我有以下字符串 从上面,我需要提取下面的文字 第一个数字和文本之间总是有一个空格,所以2129和This is page1之间有一个空格。有时第一个数字被省略,就像2129不见了。文本和下一个数字之间总是有一个空格,所以在This is a Page1和6754001之间有一个空格,有时可能有两个空格。我只需要提取这些线这些线总是从空格开始,所以它可以 它们的后面总是有一个空格,有时是一个空格,有

  • 我有一个包含两部分的简单程序:一个Spring5服务器,其中一个endpoint返回Mono 当我浏览到http://localhost:8080/rand返回一个双精度值。但是,当我使用客户机时,检索到的值始终为null(响应状态为200)。 我错过了什么?

  • 所谓字符串,指的就是字符的序列或者“串”。我们要在字符串上执行的第一个操作是提取所有字符中的一个。C++使用方括号([和])执行该操作: apstring fruit = "banana"; char letter = fruit[1]; cout << letter << endl; 表达式fruit[1]表明我们要从字符串变量fruit中取得编号为1的字符,并将结果保存在字符变量letter

  • 我正在写一个应用程序,根据该应用程序,你将被发送一条短信,其中包含一个重置代码,以确认你是该帐户的所有者。。但是我正在尝试以这样一种方式构建应用程序:它接收接收到的短信的广播,并仅从短信正文中获取指定的整数。我们注意到你想要重置密码的短信示例。密码重置代码是3242。,谢谢 我只想从整个短信正文中获取重置代码=3242。。谢谢

  • 我有一个JavaScript字符串(例如),我只想从中得到。 我试过: 它仍然在警报中返回,我如何让它工作? 它需要适应任何长度数字附加在结束。

  • 问题内容: 我想从包含数字和字母的字符串中提取数字: 我想在这里获取号码或任何其他号码。 问题答案: