【发布时间】:2021-08-21 19:24:57
【问题描述】:
所以我有一个简单的代码
try_button.setOnClickListener {
GlobalScope.launch {
fun1()
fun2()
}
}
private fun fun1(){
Timer().schedule(5000){
println("THIS IS THE FIRST FUNCTION")
}
}
private fun fun2(){
println("THIS IS THE SECOND FUNCTION")
}
我想运行第一个函数,第一个函数完成后,继续执行第二个函数。
我尝试了很多代码,但我总是得到结果
THIS IS THE SECOND FUNCTION
THIS IS THE FIRST FUNCTION
我可以等待第一个函数完成后再继续第二个函数吗?
【问题讨论】:
-
使用 runBlocking。
-
@RishabhKumarSingh 我想向任何可能看到此评论的人指出这是very dangerous advice;
runBlocking不应在生产代码中使用,除非在极其特殊的情况下。 (此外,它实际上根本无法解决这里的问题,因为这两个函数都会立即返回而不会暂停,而这里的问题更多的是逻辑错误......) -
@Moira 非常感谢。一个疑问,如果我想要一个数据库操作并且没有它的结果就无法继续。那我怎么管理?我不应该使用挂起函数吗?
标签: android kotlin kotlin-coroutines coroutine