Kotlin Developer
Telegram ·
mapLatest: отмена предыдущего трансформа для новых эмиссий
При поступлении нового значения исходного Flow оператор mapLatest отменяет работу transform для предыдущего значения, то есть вычисление предыдущего результата прерывается.
Это поведение применимо, когда transform — suspend-блок с длительными вычислениями и вам нужно отдавать только результаты для самых свежих входов, при этом оператор имеет буфер вывода по умолчанию.
Ограничения: отменяются только корутины transform для предыдущих значений; если transform побочные эффекты не отменяемы, они продолжатся; размер внутреннего буфера можно изменить только через последующий оператор buffer.
flow { emit("a") delay(100) emit("b")}.mapLatest { value -> println("Started computing $value") delay(200) "Computed $value"}
• Используйте mapLatest для отдачи только последних результатов.
• Учтите побочные эффекты в transform и поведение буфера.
#Kotlin
