Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpFwInr 180 of 299 menu
◀ ▶

Введение в потоки в Kotlin

Корутина может описать не одно действие, а цепочку шагов с данными между ними. Поток в kotlinx.coroutines.flow - способ выдавать такие значения по очереди: каждое следующее появляется только когда сборщик готов его принять.

Поток не крутит цикл сам по себе на фоне. Код внутри блока flow выполняется, когда к нему подключают сбор; до этого описание лежит без движения, как рецепт без повара.

Значение в поток кладут вызовом emit. Снаружи цепочку читают через collect в runBlocking - для каждого элемента выполняется переданное действие:

import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.flow import kotlinx.coroutines.runBlocking fun main() { runBlocking { val stream = flow { emit("alpha") emit("beta") } stream.collect { part -> println(part) } } }

В консоли появляются "alpha" и "beta" именно в этом порядке: emit задает очередность, а collect пробуждает поток и забирает элементы по одному. Пока сбор не начат, тело flow не выполняется.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить