지연되는 값 선택하기

suspend fun requestData1(): String {
    delay(1000)
    return "Data1"
}

suspend fun requestData2(): String {
    delay(500)
    return "Data2"
}

suspend fun askMultipleForData(): String = coroutineScope {
     select<String> {
        async { requestData1() }.onAwait { it }
        async { requestData2() }.onAwait { it }
    }
}

실행결과 : Data2
suspend fun askMultipleForData(): String = coroutineScope {
     select<String> {
        async { requestData1() }.onAwait { it }
        async { requestData2() }.onAwait { it }
    }.also { coroutineContext.cancelChildren() }
}

채널에서 값 선택하기