firebase - FirebaseFirestore 在 OnCompleteListener、OnSuccessListener、OnCanceledListener 和 OnFailureListener 之间有所不同
问题描述
有人可以解释一下这些 Listener 有何不同吗?
AFAIK,如果我使用 OnCompleteListener() 我可以检查任务是否完成,如果它完成我仍然可以检查它是否成功。
当任务失败时,我对此感到困惑。它发生是因为任务未完成或任务未成功,或者在这两种情况下都可能发生。OnCanceledListener 是如何工作的?什么时候会调用?“任务取消成功时调用”是什么意思?
请解释一下,我对这些 Listener 行为感到困惑?
解决方案
当 Task 所代表的工作完成时,无论其成功或失败,Task 都被视为完成。所以可能有也可能没有错误,但你必须检查一下。另一方面,当任务所代表的工作按预期完成且没有错误时,任务就成功了。
OnFailureListener
当任务因异常而失败时调用。因此,您可以从异常中获取消息以查看您的任务失败的原因。
OnCanceledListener
当Task成功取消时调用,这意味着每个Task都有一个cancel()
方法,一旦这个方法成功完成,就会调用这个监听器。
另请注意,如果网络连接丢失(用户设备上没有网络连接),则既onSuccess()
不会也不会onFailure()
触发。这种行为是有道理的,因为只有在 Firebase 服务器上提交(或拒绝)数据时才认为任务已完成。
推荐阅读
- jacoco - Jacoco 测试覆盖率低于预期
- typescript - 将类型生成为基于另一种类型的属性按顺序键入的元素数组
- javascript - 将 JS 对象推送到数组覆盖现有对象
- git - 格瑞特![远程拒绝] HEAD -> refs/for/dev (branch dev not found) 错误:未能将一些 refs 推送到“项目”
- laravel - BindingResolutionException 目标类 [hash] 部署后不存在
- reactjs - React - 我可以使用不同类型的数据设置状态吗?
- git - gitlab 提交线程在条件下自动创建
- angular - 使用对象数组和 *ngFor 动态添加 Angular 组件
- jquery - 如何使用 jquery table2Excel 或 tableHTMLExport.js 将 html 表的不同页面中的所有数据显示为 excel?
- outlook - 如何使用 OfficeJS 或 Graph API 在 Outlook 中获取分发列表(而不是组)及其成员?