java - 我怎么知道是使用 OnComplete 还是 OnSuccess?

标签 java firebase

我试图在网上找到它的答案,但找不到特定于 Firebase 实现的答案。

对于Firebase中的很多操作,我可以在OnCompleteListenerOnSuccessListener之间进行选择,我想知道如何选择他们之间?

我已阅读 OnComplete 的文档和 OnSuccess ,但正如我从 Firebase 文档中看到的那样,this one例如,对于一个特定的操作(如示例中的 get 操作),他们有时使用 OnSuccessListener,有时使用 OnCompleteListener

我如何知道在每种情况下哪个更好? 有关系吗?考虑到我想知道每个操作是否成功。

最佳答案

顾名思义,onSuccess() 将在任务成功完成时触发。

onComplete() 将在任务完成时触发,即使它失败了也是如此。

在方法中,可以调用Task.isSuccessful()Task.getException()

onSuccess() 中,您可以确定 isSuccessful() 将返回 true,而 getException() 将返回 null(所以有调用他们没什么意义)。

onComplete()中,isSuccessful()可能是false,你有机会处理失败,或许使用getException() 以获得更多详细信息。

如果您需要处理失败的任务(您应该这样做!),您有两个选择:

  1. 使用 OnCompleteListener,以及 if(task.isSuccessful()) { ... } else {...} -- 这会放置成功和失败代码靠在一起,如果这些例程共享状态可能会有用。
  2. 使用单独的 OnSuccessListenerOnFailureListener - 这允许您编写更具凝聚力的监听器,因为每个处理程序都专注于一件事。当然,一个类可以实现两个接口(interface),为您提供另一种方式让两者看到相同的状态。

关于java - 我怎么知道是使用 OnComplete 还是 OnSuccess?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46649162/

相关文章:

Java lambda LinkedBlockingQueue 意外行为

java - JWrapper 应用程序在加载时在所有版本的 OSX 上崩溃

java - 如何使用 Hibernate 映射 byte[] 属性?

android - 客户端到客户端的短消息

javascript - 如何对包含 equalTo() api 的 firebase 查询进行分页

java - Apache Mina SFTP SftpSubsystem.Factory()

java - 使用一致的电话号码作为 ID

java - 在 firebase 中创建异常

reactjs - 将数据传递到 Firebase auth.user().onCreate 云函数

reactjs - getInitialProps() 应该解析为一个对象。但是却发现了 "undefined"