在我的android应用中,我需要执行一些长时间的网络操作后才能返回结果(例如10秒后)
此处摘录:
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
GlobalScope.launch(Dispatchers.Main) {
lateinit var response: Response<Void>
response = executeOperations.await()
return response
}
但是我在这一行中遇到编译错误:
return response
错误消息:
'return' is not allowed here
答案 0 :(得分:1)
它不是那样工作的。您的return
不允许在那里,因为您在这些coroutine context
上的{ }
内部
但是实际上最好的方法是创建一些方法并处理该响应,而不是返回它。关于您的情况,我有些困惑:
转换:
GlobalScope.launch(Dispatchers.Main) {
lateinit var response: Response<Void>
response = executeOperations.await()
return response
}
进入:
GlobalScope.launch(Dispatchers.IO) {
lateinit var response: Response<Void>
response = executeOperations.await()
withContext(Dispatchers.Main){
handleResponse(response)
}
}
此外,您的繁重工作不会在Dispatchers.Main
中发生,而是在Dispatchers.IO