Коутин Котлин с возвращаемым значением

Я хочу создать метод coroutine, возвращающий значение.

Например)

fun funA() = async(CommonPool) { return 1 } fun funB() = async(CommonPool) { return 2 } fun sum() { launch { val total = funA().await() + funB().await() } } 

Если я хочу вернуть общий метод суммирования, как мне это сделать?

как,

 fun sum(): Int { launch { val total = funA().await() + funB().await() } return total } 

Чтобы вернуть точно Int , вам нужно выйти из мира coroutine, и это то, что runBlocking для:

 fun sum(): Int = runBlocking { funA().await() + funB().await() } 

См. Раздел Модификация блокировки и неблокирующие миры в сопроводительном руководстве и составление приостанавливающих функций для того, как это сделать, если вы хотите использовать sum внутри сопрограмм.