лучше запустить 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 следовало
Если я правильно понимаю, то в твоём коде по сути нету асинка, т.к. ты сразу делаешь 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() сразу. А оно саспендит корутину
Обсуждают сегодня