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

Я хочу создать метод 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 внутри сопрограмм.

Intereting Posts
Как этот сильный синтаксис переводится в котлин? Центрировать вертикально VideoView на портрете Как элегантная пара родительского и дочернего тегов в определении DSL в Kotlin Почему скрытие фрагмента вызывает исключение нулевого указателя? Не удается получить доступ к внутренним компонентам из тестового источника с помощью Android Firebase-firestore не может использовать два документа В чем разница между этими флагов компилятора Kotlin? Дополнительные наблюдаемые данные в combLatest Вызов конструктора в kotlin с использованием vararg Как получить идентификатор документа для документа Firestore с использованием классов данных kotlin Преобразовать предикат kotlin в java Проверить значение null в функции карты в Котлине Как включить аутентификацию носителей в приложении Spring Boot? Правила Kotlin JUnit Почему Netbeans жалуется на двусмысленность, в то время как Intellij вместо этого не