CoroutineScope не ждет дочерних сопрограмм? ⇐ Android
-
Гость
CoroutineScope не ждет дочерних сопрограмм?
Я пытаюсь изучить сопрограммы в Kotlin, и теперь у меня возникла проблема с кодом, с которым я играл на Kotlin Playground.
У меня есть две функции приостановки. Один с задержкой в 3 секунды. Я буду вызывать обе функции внутри сопрограммы. Если я вызываю getWeatherReport() в основном, я ожидаю, что он напечатает оба сообщения почти одновременно, потому что сказано, что сопрограммы ждут, пока все его дочерние сопрограммы завершат вычисления, а затем возвращаются. Но почему здесь 30 градусов печатаются сразу после 100 мс?
Из официального документа: «Эта функция возвращает значение, как только данный блок и все его дочерние сопрограммы завершены». Что именно означает, что функция возвращает значение?
приостановить веселье getWeatherReport() = coroutineScope { запустить { getTemperature() } запустить { getWind() } } приостановить веселье getTemperature(){ задержка(100) println("30 градусов") } приостановить веселье getWind(){ задержка(3000) println("Ветер с севера") } Вот как я вызываю main:
fun main(args: Array) { runBlocking { getWeatherReport() } }
Я пытаюсь изучить сопрограммы в Kotlin, и теперь у меня возникла проблема с кодом, с которым я играл на Kotlin Playground.
У меня есть две функции приостановки. Один с задержкой в 3 секунды. Я буду вызывать обе функции внутри сопрограммы. Если я вызываю getWeatherReport() в основном, я ожидаю, что он напечатает оба сообщения почти одновременно, потому что сказано, что сопрограммы ждут, пока все его дочерние сопрограммы завершат вычисления, а затем возвращаются. Но почему здесь 30 градусов печатаются сразу после 100 мс?
Из официального документа: «Эта функция возвращает значение, как только данный блок и все его дочерние сопрограммы завершены». Что именно означает, что функция возвращает значение?
приостановить веселье getWeatherReport() = coroutineScope { запустить { getTemperature() } запустить { getWind() } } приостановить веселье getTemperature(){ задержка(100) println("30 градусов") } приостановить веселье getWind(){ задержка(3000) println("Ветер с севера") } Вот как я вызываю main:
fun main(args: Array) { runBlocking { getWeatherReport() } }
Мобильная версия