Лучший способ сбора данных из Flow

kotlin

Это неболь­шая замет­ка о неоче­вид­ных момен­тах Kotlin Flow API и фун­кции launchIn.

РЕКОМЕНДУЕМ:

Пред­ста­вим, что нам необ­ходимо соб­рать дан­ные из Flow. Спо­соб сде­лать это «в лоб» выг­лядел бы так:

Од­нако «канонич­ный» спо­соб будет дру­гим:

И это не прос­то син­такси­чес­кий сахар. LaunchIn поз­воля­ет избе­жать весь­ма неоче­вид­ных проб­лем с при­ложе­нием.

К при­меру, ког­да нуж­но соб­рать дан­ные из двух Flow, лег­ко оши­бить­ся и сде­лать это так:

Ошиб­ка здесь в том, что дан­ные из двух Flow не будут собирать­ся одновре­мен­но. Сна­чала будут получе­ны все дан­ные из  flow1, и толь­ко затем нач­нется сбор flow2.

Ис­пра­вить это некано­нич­ным путем мож­но так:

Од­нако при исполь­зовании launchIn такого не воз­никнет в прин­ципе:

Источник

Понравилась статья? Поделиться с друзьями:
Добавить комментарий