169 похожих чатов

Я корутины более подробно наконец начал тыкать, подскажите, а как

лучше запустить 2 параллельных операции в рамках одной функции?

launch(context = IO, parent = ...) {
val details = ... getDetails()
withContext(UI) {
...
}
}
Внутри getDetails` я бы хотел запустить 2 операции параллельно. Можно сделать так
suspend fun getDetails(): Details {
val a = async { getA() }.await()
val b = async { getB() }.await()

return Details(a, b)
}

Такой вариант ок или есть лучше?
По идее, async бы тоже указать parentJob следовало

2 ответов

5 просмотров

Если я правильно понимаю, то в твоём коде по сути нету асинка, т.к. ты сразу делаешь await Неплохо бы для начала await в конец закинуть: suspend fun getDetails(): Details { val a = async { getA() } val b = async { getB() } return Details(a.await(), b.await()) } (По аналогии с примером из доки - https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md#concurrent-using-async )

если мне не изменяет память, то корутины в getDetails выполнятся последовательно, т.к. ты вызываешь await() сразу. А оно саспендит корутину

Похожие вопросы

Обсуждают сегодня

Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
why some site like google has separate page for username/email and password?
Mr Thieves
21
Может быть небольшое отступление, но я тут решил обратить внимание на то, сколько весит хелловорлд на с++... Зачем он весит почти 250 Кб? У меня оконное приложение на фасме ве...
The Bird of Hermes
14
всем привет! у кого есть опыт подписания и нотаризации electron приложений для macos? такая проблема: использовал @electron/osx-sign и notaritool. процесс подписания и нотараз...
Артем Клементьев
6
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
@Dreamer_0x01 @helgispbru @Ambrion Разговор шёл об уязвимости. Меня беспокоит именно она. Все прочие вопросы, а равно и жизненная мудрость - пока в сторону :) Так вот сам ...
Андрей [aharito] Харитонов
5
What do you wanna learn?
Malware ( DM = BLOCK )
12
Подскажите, сейчас что то есть (JS модуль какой-нибудь), что можно использовать для: 1) переваривания javascript codа из html fileа, т.е. разбивки, на переменные, команды, бло...
Iar De
32
Всем привет. Программно добавляю документы в таблицу site_content в конце очищаю кеш $modx->clearCache(); Но документы появляются в дереве только после того как редактирую ...
Владимир
8
Мне интересно, скорее людей здесь используют D, Rust, C/C++ для решения реальных прикладных задач за деньги?)
Evil Satanson
43
Карта сайта