Я изучаю сопрограммы Котлина.
Код A использует async
в сопрограммах Kotlin, и я могу использовать .await()
для отложенного значения, чтобы получить его конечный результат, поэтому one.await()
вернет Int.
Если я использую launch
в сопрограммах, могу ли я получить фактическое значение так же, как one.await()
?
Код А
val time = measureTimeMillis {
val one = async { doSomethingUsefulOne() }
val two = async { doSomethingUsefulTwo() }
println("The answer is ${one.await() + two.await()}")
}
println("Completed in $time ms")
suspend fun doSomethingUsefulOne(): Int {
delay(1000L) // pretend we are doing something useful here
return 13
}
suspend fun doSomethingUsefulTwo(): Int {
delay(1000L) // pretend we are doing something useful here, too
return 29
}
async
иlaunch
, заключается в том, что одна предназначена для вычислений, которые возвращают значение, а другая - для работы, вызывающей побочные эффекты. - person Marko Topolnik   schedule 19.03.2020