Sobes.tech
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.