java - 在 Project Reactor 中处理来自 Mono 的可选值

标签 java reactive-programming project-reactor

我想要一个 Mono 调用另一个返回 Optional 类型的异步方法:

  1. 如果 Optional 不为空,则有一个值,
  2. 如果 Optional 值为空,则为 MonoEmpty

这是我现在做的:

Mono.fromCallable(() -> someApi.asyncCall()) .filter(可选::isPresent) .map(可选::获取)

显然,这并不理想,因为它在可调用完成后使用了两个运算符。如果可能,我希望从 fromCallable 中获取 Mono.empty() 或单声道值。

实现我想要的最好的方法是什么?

最佳答案

flatMap 有一个替代方案,它比 Optional.isPresentOptional.get 好一点,可能会导致意外调用 get on空 可选:

Mono.fromCallable(() -> someApi.asyncCall())
  .flatMap(optional -> optional.map(Mono::just).orElseGet(Mono::empty))

关于java - 在 Project Reactor 中处理来自 Mono 的可选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53186025/

相关文章:

java - Rx - 按条件将流分成段(列表)

java - 在 rxjava 中使用一系列 Observable 进行一对多映射

java - 如何动态更新 RX Observable?

java - WebClient 请求级别超时抛出称为默认 onErrorDropped 的运算符

spring-webflux - react 堆句柄运算符返回对象?

java - 字符串文字作为方法的参数

java - 可观察模式应用于海量记录更新

java - 使用动态字符串引用 arraylist

java - Hibernate 和键值对实现

Spring 5 Web Reactive - 热发布 - 如何使用 EmitterProcessor 将 MessageListener 桥接到事件流