Junior — Middle
Jaké jsou hlavní rozdíly mezi operátory flatMapLatest a flatMapMerge v reaktivním programování?
sobes.tech AI
Odpověď od AI
V reaktivním programování, například v Kotlin Flow, se operátory flatMapLatest a flatMapMerge používají k přeměně prvků toku na nové toky, ale liší se v chování při výskytu nových prvků:
-
flatMapLatest: při příchodu nového prvku ukončí předchozí vnitřní tok a přepne se na nový. To je užitečné, když je důležitý pouze poslední výsledek, například při vyhledávání s automatickým doplňováním.
-
flatMapMerge: spouští všechny vnitřní toky paralelně a jejich výsledky slučuje, aniž by ukončil předchozí. Používá se, když je třeba zpracovat všechny požadavky současně.
Příklad:
flowOf(1, 2, 3)
.flatMapLatest { value -> flow {
emit(value)
delay(100)
emit(value * 10)
} }
// S flatMapLatest bude zpracován pouze poslední prvek (3), předchozí budou zrušeny.
flowOf(1, 2, 3)
.flatMapMerge { value -> flow {
emit(value)
delay(100)
emit(value * 10)
} }
// S flatMapMerge budou všechny prvky zpracovány paralelně a sloučeny do jednoho toku.