使用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
的情况下获取协程的返回值。