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.