使用async函数来实现协程的返回值。以下是一个示例代码:
import kotlinx.coroutines.*
suspend fun getValue(): Int {
delay(1000) // 模拟耗时操作
return 42
}
fun main() {
val job = GlobalScope.async {
getValue()
}
// 可以执行其他的操作,不会阻塞主线程
GlobalScope.launch {
val result = job.await()
println("协程返回的值:$result")
}
// 其他操作...
runBlocking {
delay(2000) // 等待协程完成
}
}
在上面的示例中,getValue()函数是一个挂起函数,它返回一个Int值。我们使用async函数来启动一个协程并调用getValue()函数。job变量持有了这个协程的引用。
在GlobalScope.launch中,我们使用await()函数来等待协程的完成,并获取它的返回值。然后,我们将返回值打印出来。
在runBlocking中,我们使用delay函数来等待协程完成,以确保主线程不会在协程完成之前退出。
这种方式可以在不使用runBlocking的情况下获取协程的返回值。