각종 Collections는 map, mapLatest, flatMapLatest 등의 map 함수를 가지고 있는데요. 여기서 map은 HashMap의 map보다는 변환(mapping)의 의미라고 보시면 되겠습니다. 겉의 Flow형태는 유지하되 알맹이가 Int 타입에서 Plant타입으로 변환되었죠.
val searchPlants: LiveData<List<Plant>> = keyWord.flatMapLatest { word ->
if (word == NO_KEYWORD) {
plantRepository.getPlants()
} else {
plantRepository.getPlantsWithKeyWord(word)
}
}.asLiveData()
사용자가 빠르게 검색어를 변경하면, 이전 검색어에 대한 처리 작업이 중복될 수 있다. flatMapLatest는 최신 검색어의 데이터 스트림만 활성화하고, 이전 데이터 스트림의 처리를 취소된다. 즉, 검색어가 빠르게 변경되면 이전 검색어의 처리 작업은 취소되고, 현재 검색어에 대한 데이터만 처리된다