创建suspendCoroutine的疑问


#1

如果我写这样一个方法
fun getUserInfo() = suspendCoroutine { continuation ->
//什么都不做或者说因为逻辑遗留没有调用 continuation.resume
}

多次调用 getUserInfo() 会发生什么?


#2

我也想知道…问了两次次也没人回答


#3

首先这个函数写得有问题,普通函数不能调用 suspendCoroutine,需要加上 suspend 关键字

然后,如果不调用 resume 的话,会导致调用 getUserInfo 函数的协程永远挂起


#4

是的 需要加上suspend 关键字 请忽略我的语法错误
getUserInfo 函数的协程永远挂起也就意味着如果我频繁通过 getUserInfo 创建协程但是并不恢复它 如果在方法内部开辟了大量的对象 其实也不能得到释放了 我理解是这样不知道对不对
所以如果启动协程应该限定CoroutineScope,在某些生命周期里应该可以把这些永远挂起的协程取消掉


京ICP备16022265号-2 Kotlin China 2017 - 2018