flatMapLatest: переключение и отмена вложенного Flow
Нужно переключаться на новый Flow при каждом значении исходного Flow, отменяя предыдущую подпоследовательность, чтобы не обрабатывать устаревшие данные.
flatMapLatest создаёт новый Flow через transform при каждом emit исходного Flow и отменяет ранее созданный вложенный Flow, когда поступает новое значение, то есть выходной Flow всегда отражает только последнюю подпоследовательность.
Оператор буферизуется по умолчанию и размер его выходного буфера можно изменить применением последующего buffer, что влияет на задержку доставки элементов и поведение отмены.
flow { emit("a") delay(100) emit("b")}.flatMapLatest { value -> flow { emit(value) delay(200) emit(value + "_last") }}
• Используйте, когда нужно игнорировать результаты старых эмитов.
• Учтите встроенную буферизацию и настройте buffer при необходимости.
#Kotlin