то одна из задач которую решает этот тип флоу это fan-out распределение элементов которые в него заталкивают (т.е. всем подписавшимся). Вот у меня есть такая конструкция:
private val myInternalFlow = MutableSharedFlow<String>(
onBufferOverflow = BufferOverflow.DROP_OLDEST,
extraBufferCapacity = 5)
val publicFlow = myInternalFlow.map {
println("map called")
"haha: $it"
}
...
publicFlow.onEach { doStuff(it) }.launchIn(scope1)
...
publicFlow.onEach { doOtherStuff(it) }.launchIn(scope2)
Т.е. я выставляю внутренний флоу как некоторый трансформированный publicFlow и все заинтересованные на него подписываются. В принципе всё хорошо но "map called" сообщение появляется для каждого подписавшегося, т.е. трансформация случается чаще чем это реально необходимо. Можно как-то этого избежать без сильных наворотов?
А если после map сделать дополнительный shareIn?
Да, видимо так и надо делать.. осталось где-то скоуп раздобыть :)
Обсуждают сегодня