【发布时间】:2019-03-25 08:07:19
【问题描述】:
我已使用挂起例程构建器使 Firebase 任务从基于异步侦听器的代码转移到基于协程的代码。
这是我实现协程行为的挂起协程。
suspend fun <T> Task<T>.awaitTask(): T =
suspendCoroutine { continuation ->
addOnCompleteListener { task ->
if (task.isSuccessful) {
continuation.resume(task.result!!)//what to do if task.result is null
} else {
continuation.resumeWithException(task.exception!!)
}
}
}
这就是我调用它的方式
firebase.createUserWithEmailAndPassword(userCredentials.email!!, userCredentials.password!!).awaitTask()
在我们执行一个有可能为空结果的任务之前,一切正常。像 。
firebase.currentUser?.updateProfile(profileUpdates)?.awaitTask()
这里更新成功后,task.result 为空。在这种情况下,应该将什么传递给 continuation.resume?。
【问题讨论】:
-
可能是重复的,我想是helpful。
标签: android kotlin firebase-authentication kotlin-coroutines