首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将协程函数作为函数参数传递

将协程函数作为函数参数传递
EN

Stack Overflow用户
提问于 2019-03-16 18:20:20
回答 1查看 618关注 0票数 1

我需要传递一个协程函数作为另一个函数的参数。例如:

代码语言:javascript
复制
private fun handleIt(here: Long, call: (hereId: Long) -> Unit) {
            call(here)
}

然后从协程作用域:

代码语言:javascript
复制
GlobalScope.launch {
                        handleIt(3) { viewModel.doThings(hereId) }
                    }

viewModel函数如下所示:

代码语言:javascript
复制
suspend fun doThings(hereId: Long) {
        withContext(coroutineContextProvider.io) {
            doSomething(hereId)
        }
    }

但是现在,我得到了一个错误:“挂起函数只能在协程主体中调用。有什么建议吗?”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-16 18:39:42

简单的解决方案是将块和handleIt函数都标记为挂起:

代码语言:javascript
复制
suspend fun handleIt(here: Long, call: suspend (hereId: Long) -> Unit) {
    call(here)
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55195666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档