我在下面有一些代码。延迟(3000)只是长循环(或循环)的替代。我期待循环完成后println(res)会打印“Some String”然后启用button。但在现实生活中会println(res)打印一个空字符串并button在我单击它时同时启用。我的问题是:如何等待协程结束,并且只有在协程运行println(res)和button.isEnabled = true.
private var res: String = ""
private suspend fun test(): String {
delay(3000) // delay - just replacement for long loop
return "Some String" // String received after loop
}
fun onClick(view: View) {
res = ""
button.isEnabled = false
GlobalScope.launch {
res = withContext(Dispatchers.Default) {
test()
}
}
println(res) // 1. trying to get string received after loop, but not working
button.isEnabled = …Run Code Online (Sandbox Code Playgroud)