Este tutorial ha sido aprobado por nuestros especialistas así se asegura la veracidad de este ensayo.
Solución:
conseguir un String
a partir de una Mono
sin un bloqueo de llamadas no es fácil, es imposible. Por definición. Si el String
aún no está disponible (que Mono
permite), no puede obtenerlo excepto esperando hasta que entre y eso es exactamente lo que es bloquear.
En lugar de “obtener un String
” tú subscribe
hacia Mono
y el Subscriber
pasas obtendrás el String
cuando esté disponible (tal vez inmediatamente). P.ej
myMono.subscribe(
value -> Console.out.println(value),
error -> error.printStackTrace(),
() -> Console.out.println("completed without a value")
)
imprimirá el valor o error producido por myMono
(tipo de value
es String
tipo de error
es Throwable
). En https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html puede ver otras variantes de subscribe
también.
De acuerdo con el documento que puede hacer:
String getValue(Mono mono)
return mono.block();
ser consciente de la llamada de bloqueo
Finalmente, lo que funcionó para mí es llamar al método flatMap como se muestra a continuación:
public void getValue(Mono monoString)
monoString.flatMap(this::print);