【发布时间】:2023-03-25 02:15:01
【问题描述】:
我不能使用“by lazy”,因为回调需要suspendCoroutine,如果它阻塞了主线程,它会在android中运行,所以我必须一遍又一遍地使用以下“缓存结果”模式。有没有办法将它包装在 funButUseCachedResultsIfTheyAlreadyExist 模式中以封装 xCached 对象?
private var cameraDeviceCached: CameraDevice? = null
private suspend fun cameraDevice(): CameraDevice {
cameraDeviceCached?.also { return it }
return suspendCoroutine { cont: Continuation<CameraDevice> ->
... deep callbacks with cont.resume(camera) ...
}.also {
cameraDeviceCached = it
}
}
当我真正想写的是
private suspend fun cameraDevice(): CameraDevice = theMagicFunction { cont ->
... deep callbacks with cont.resume(camera) ...
}
【问题讨论】: