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() } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Разница CoroutineScope(Dispatchers.IO + Job()) и CoroutineScope(Dispatcher.IO) + Job()
Anonymous » » в форуме Android - 0 Ответы
- 43 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Разница CoroutineScope(Dispatchers.IO + Job()) и CoroutineScope(Dispatcher.IO) + Job()
Anonymous » » в форуме Android - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-