비동기 Flow

Kotlun의 Flow는 순차적으로 값을 내보내고 정상적으로 또는 예외로 완료되는 비동기적인 데이터 스트림입니다.

복수의 값들 표현

fun simple(): List<Int> = listOf(1, 2, 3)
 
fun main() {
		simple().forEach { value -> println(value) } 
}

실행결과
1
2
3

Sequences

fun simple(): Sequence<Int> = sequence { // sequence builder
    for (i in 1..3) {
        Thread.sleep(100) // pretend we are computing it
        yield(i) // yield next value
    }
}

fun main() {
    simple().forEach { value -> println(value) } 
}

일시중단 함수들

import kotlinx.coroutines.*

suspend fun simple(): List<Int> {
    delay(1000)
    return listOf(1, 2, 3)
}

fun main() = runBlocking<Unit> {
    simple().forEach { value -> println(value) }
}

Flows