我需要将协程函数作为另一个函数的参数传递。例如:
private fun handleIt(here: Long, call: (hereId: Long) -> Unit) {
call(here)
}
,然后从协程范围:
GlobalScope.launch {
handleIt(3) { viewModel.doThings(hereId) }
}
viewModel函数如下所示:
suspend fun doThings(hereId: Long) {
withContext(coroutineContextProvider.io) {
doSomething(hereId)
}
}
但是现在,我得到一个错误:“只能在协程体内调用悬浮函数。有什么建议吗?
答案 0 :(得分:1)
简单的解决方案是将代码块和handleIt
功能都标记为暂停:
suspend fun handleIt(here: Long, call: suspend (hereId: Long) -> Unit) {
call(here)
}