По вашему мнению, getMyChats
не поддерживает взятие приостановленного блока (лямбда).
Так что вы можете обернуть его с помощью suspendCancellableCoroutine .
suspend fun getMyChatsSuspend(): List<Chat> = suspendCancellableCoroutine { cont ->
getMyChats { cont.resume(it) }
}
Теперь используйте вашу функцию следующим образом:
suspend fun getChats() {
...
val chats = getMyChatsSuspend()
val chatDetails = chats.map{ chat.getDetail() }
val chatDetailsAwait = awaitAll( *chatDetails.toTypedArray() )
}
Очевидно, просто цепочка вызовов вместо создания нескольких переменных, если вы хотите
Если вы хотите, чтобы все было сделано в одну строку, вы можете сделать :
val resolvedDetails = getMyChatsSuspend().map{ chat.getDetail() }.let { awaitAll(*it.toTypedArray()) }