bertzzie:
Quiero tener una Mono
que llama a otro método asíncrono que devuelve un Optional
tipo de:
- tener un valor si el
Optional
no está vacío, - es
MonoEmpty
si elOptional
valor está vacío.
Esto es lo que hago en este momento:
Mono.fromCallable(() -> someApi.asyncCall()) .filter(Optional::isPresent) .map(Optional::get)
Obviamente, esto no es ideal, ya que utiliza dos operadores después de la exigible completó. Si es posible, me gustaría tener el Mono.empty()
o mono valor desde el interior fromCallable
.
¿Cuál es la mejor manera de lograr lo que quiero?
Ilya zinc:
Hay una alternativa a flatMap
eso es un poco mejor que Optional.isPresent
y Optional.get
que puede inducir a poner accidentalmente caen en el vacío Optional
:
Mono.fromCallable(() -> someApi.asyncCall())
.flatMap(optional -> optional.map(Mono::just).orElseGet(Mono::empty))