kotlin/async()
from Kotlinのコルーチン
非同期関数の戻り値を受け取ったのちに処理を行う場合に使う
async()関数はDeferred型のオブジェクトを返す。
await()関数を利用して、Defferdオブジェクトの結果にアクセスできる。
以下の例は、非同期関数の戻り値をDefferd<String>型の変数forecast,tempertureに格納し、
forecast.await(),temperture.await()によってその結果にアクセスする。
code:kotlin
import kotlin.system.*
import kotlinx.coroutines.*
fun main() {
val time = measureTimeMilis {
runBlocking {
println("Weather forecast")
val forecast: Deferred<String> = async {
getForecast()
}
val temperature: Deferred<String> = async {
getTemperature()
}
println("${forecast.await()} ${temperature.await()}")
println("Have a good day!")
}
}
println("Execution time: ${time / 1000.0} seconds")
}
suspend fun getForecast(): String {
delay(1000)
return "Sunny"
}
suspend fun getTemperature(): String {
delay(1000)
return "30\u00b0C"
}
code:出力
Weather forecast
Sunny 30°C
Have a good day!
Execution time: 1.362 seconds
非同期関数を同時に実行しながら、戻り値に依存した標準出力処理が行えているのがポイント