Ну ... то, что вы ищете, на самом деле не то, для чего Flow
. Flow
это просто поток. Он не является держателем значения, поэтому вам не нужно ничего извлекать.
Итак, есть два основных пути к снижению go, в зависимости от потребностей вашего перехватчика.
Возможно, ваш перехватчик может жить без данных из хранилища. IOW, вы будете использовать данные, если они существуют, но в противном случае перехватчик может продолжаться. В этом случае вы можете сделать так, чтобы ваш репозиторий испускал поток, но также поддерживал кэш "текущего значения", который может использовать ваш перехватчик. Это может быть через:
BroadcastChannel
LiveData
- простое свойство в хранилище, которое вы обновляете внутри и представляете как
val
Если данные вашего перехватчика нуждаются в данных, то ни один из них не будет работать напрямую, поскольку все они приведут к получению перехватчиком null
, если данные еще не готовы. Вам понадобится вызов, который может блокировать, но, возможно, быстро оценивает, готовы ли данные через какую-либо форму кэша. Детали этого будут сильно различаться в зависимости от реализации репозитория и того, что в первую очередь поставляет Flow
.