Sobes.tech
Junior — Middle

Quelles sont les principales différences entre les opérateurs flatMapLatest et flatMapMerge en programmation réactive?

sobes.tech IA

Réponse de l'IA

En programmation réactive, par exemple en Kotlin Flow, les opérateurs flatMapLatest et flatMapMerge sont utilisés pour transformer les éléments d'un flux en de nouveaux flux, mais diffèrent dans leur comportement face à l'apparition de nouveaux éléments :

  • flatMapLatest : lorsqu'un nouvel élément arrive, il annule le flux interne précédent et passe au nouveau. Cela est utile lorsque seul le dernier résultat compte, par exemple dans la recherche avec autocomplétion.

  • flatMapMerge : lance tous les flux internes en parallèle et combine leurs résultats, sans annuler les précédents. Utilisé lorsque tous les requêtes doivent être traitées simultanément.

Exemple :

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

// Avec flatMapLatest, seul le dernier élément (3) sera traité, les précédents seront annulés.

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

// Avec flatMapMerge, tous les éléments seront traités en parallèle et combinés en un seul flux.