Junior — Middle
Quais são as principais diferenças entre os operadores flatMapLatest e flatMapMerge na programação reativa?
sobes.tech IA
Resposta da IA
Na programação reativa, por exemplo em Kotlin Flow, os operadores flatMapLatest e flatMapMerge são usados para transformar elementos de um fluxo em novos fluxos, mas diferem no comportamento ao surgirem novos elementos:
-
flatMapLatest: ao receber um novo elemento, cancela o fluxo interno anterior e muda para o novo. Isto é útil quando apenas o último resultado importa, por exemplo, em buscas com autocompletar.
-
flatMapMerge: inicia todos os fluxos internos em paralelo e combina seus resultados, sem cancelar os anteriores. Usado quando é necessário processar todas as requisições simultaneamente.
Exemplo:
flowOf(1, 2, 3)
.flatMapLatest { value -> flow {
emit(value)
delay(100)
emit(value * 10)
} }
// Com flatMapLatest, apenas o último elemento (3) será processado, os anteriores serão cancelados.
flowOf(1, 2, 3)
.flatMapMerge { value -> flow {
emit(value)
delay(100)
emit(value * 10)
} }
// Com flatMapMerge, todos os elementos serão processados em paralelo e combinados em um único fluxo.