es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo acceder al valor emitido por Flux en la suscripción.

Los elementos emitidos por Flux (en este caso “Rojo”, “Blanco”, “Azul”) se pasan a una llamada de servicio externo. Estoy obteniendo el valor de respuesta del servicio externo en returnValue. ¿Cómo puedo mapear los elementos enviados al servicio externo con la respuesta recibida?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para relacionar los elementos enviados al servicio externo con la respuesta recibida, se puede usar el operador map antes de llamar a flatMap. En el operador map, se puede emparejar cada elemento con un identificador único que se pueda usar más tarde para emparejar el valor de respuesta. Aquí tienes un ejemplo:

    Flux.just("Rojo", "Blanco", "Azul")
        .map(color -> new Pair<>(color, Mono.fromCallable(() -> {
            // > Llamada al servicio externo realizada aquí.
            return "Valor de retorno de la llamada al servicio externo.";
        })))
        .flatMap(pair -> pair.getSecond()
            .map(returnValue -> new Pair<>(pair.getFirst(), returnValue)))
        .subscribeOn(Schedulers.single())
        .subscribe(pair -> log.info("La respuesta para {} es {}", pair.getFirst(), pair.getSecond()));
    

    En este ejemplo, se utiliza el operador map para emparejar cada color con un Mono que representa la llamada al servicio externo. El operador flatMap luego ejecuta la llamada del servicio externo y mapea el resultado a un nuevo par que empareja el color con el valor de respuesta. Finalmente, el resultado se registra con el identificador de color correspondiente utilizando el operador subscribe.

Comments are closed.