以下功能有何不同?
suspend fun doSomething1():Boolean{
val res = longtimeFunction()
return res
}
suspend fun doSomething2():Boolean = suspendCoroutine{ continuation->
val res = longtimeFunction()
continuation.resume(res)
}
答案 0 :(得分:2)
没有区别,因为这不是您使用suspendCoroutine
的方式。为了实现挂起的非阻塞行为,首先,您需要一个不执行阻塞调用的API,而是要有一个方法来启动操作并立即返回,但需要您执行 callback 将会通知结果。例如:
suspend fun doSomething2() = suspendCoroutine<Boolean> { continuation ->
asyncLongtimeFunction(object: Callback {
override fun onSuccess(res: Boolean) {
continuation.resume(res)
}
})
}