Sobes.tech
Junior — Middle

¿Cuáles son las principales diferencias entre los operadores flatMapLatest y flatMapMerge en programación reactiva?

sobes.tech AI

Respuesta de la IA

En la programación reactiva, por ejemplo en Kotlin Flow, los operadores flatMapLatest y flatMapMerge se utilizan para transformar los elementos del flujo en nuevos flujos, pero difieren en su comportamiento ante la aparición de nuevos elementos:

  • flatMapLatest: al recibir un nuevo elemento, cancela el flujo interno anterior y se cambia al nuevo. Esto es útil cuando solo importa el último resultado, por ejemplo, en búsquedas con autocompletado.

  • flatMapMerge: inicia todos los flujos internos en paralelo y combina sus resultados, sin cancelar los anteriores. Se usa cuando se necesitan procesar todas las solicitudes simultáneamente.

Ejemplo:

flowOf(1, 2, 3)
    .flatMapLatest { value -> flow {
        emit(value)
        delay(100)
        emit(value * 10)
    } }

// Con flatMapLatest solo se procesará el último elemento (3), los anteriores serán cancelados.

flowOf(1, 2, 3)
    .flatMapMerge { value -> flow {
        emit(value)
        delay(100)
        emit(value * 10)
    } }

// Con flatMapMerge, todos los elementos se procesarán en paralelo y se combinarán en un solo flujo.