我想要一个 Mono
调用另一个返回 Optional
类型的异步方法:
- 如果
Optional
不为空,则有一个值, - 如果
Optional
值为空,则为MonoEmpty
。
这是我现在做的:
Mono.fromCallable(() -> someApi.asyncCall())
.filter(可选::isPresent)
.map(可选::获取)
显然,这并不理想,因为它在可调用完成后使用了两个运算符。如果可能,我希望从 fromCallable
中获取 Mono.empty()
或单声道值。
实现我想要的最好的方法是什么?
最佳答案
flatMap
有一个替代方案,它比 Optional.isPresent
和 Optional.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/