如何解决在 Kotlin 中将 completableFuture 更改为 Coroutines
https://github.com/temyco/sceneform-dynamic-textures-sample
这里是github repo的链接。我想了解我们如何将 Completable Future 转换为 Coroutine。
例如-
private lateinit var renderableModel: ModelRenderable
private lateinit var renderableFuture: CompletableFuture<ModelRenderable>
private lateinit var materialFuture: CompletableFuture<CustomMaterial>
private lateinit var customMaterial: CustomMaterial
renderableFuture.thenAcceptBoth(materialFuture) { renderableResult,materialResult ->
customMaterial = materialResult
renderableModel = renderableResult
renderableModel.material = customMaterial.value
}
我们如何将上面的代码片段转换为使用协程。
解决方法
在这种情况下,您并没有真正将 future 转换为协程,因为 future 已经安排在后台执行。如果你只需要以挂起的方式消费期货来让你的代码同步,那么这真的很容易:
suspend fun fun1() {
renderableModel = renderableFuture.await()
customMaterial = materialFuture.await()
renderableModel.material = customMaterial.value
}
请注意,在 materialFuture
失败的情况下,只有在 renderableFuture
完成后才会出现异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。