当前位置: 首页 > 知识库问答 >
问题:

如何等待Firestore完成,然后返回布尔结果?[重复]

李星波
2023-03-14

集合中的文档存在或不存在时,我想返回True或False。但它总是返回错误。

if (checkItemDeleted(post)) {
   // true, item still there
} else {
  // false, item deleted
}
boolean result = false;
private boolean checkItemDeleted(Post post) {
        mPostsCollection
                .document(post.itemID)
                .get()
                .addOnCompleteListener(task -> {
                    if (task.isSuccessful()){
                        if (task.getResult().exists()) {
                            // document exists
                            result = true;
                        } else {
                            // document not exists
                            result = false;
                        }
                    }
                });
        return result;
    }

我还在学习,谢谢你的帮助。

共有1个答案

薄欣怿
2023-03-14

在get调用完成之前返回结果。别忘了这是异步的。

尝试使用async和wait而不是完整的侦听器。

 类似资料:
  • 我是一个新的反应,但我已经工作了很多年的Vue。当我需要等待一个动作完成时,我现在被困在一个区域。在操作完成后,我必须进行另一个操作调用或在那里执行一些操作。但它不会等待操作完成并开始执行下面的代码。 方法: 从其中调度操作的方法: 现在,在上面的代码中,重定向并不是在等待调度完成。我试过这个,但它不起作用:

  • 问题内容: 我看过许多使用这种语法的示例,但是看不到我做错了什么。“ then”函数在ajax调用返回之前正在运行。 我也尝试过使用$ .deferred和其他一些模式无济于事。 有人可以看到我所缺少的吗? 我已经调试,可以看到在ajax调用返回其成功(或错误)数据之前,已完成/然后内部进行的调用。 谢谢你的帮助。 主要电话: 它正在调用以下ajax函数: 谢谢! 验尸: 除了将返回值添加到aja

  • 问题内容: 我的问题: 如何在a上执行一堆线程对象并等待它们全部完成后再继续? 我是ThreadPoolExecutor的新手。因此,此代码是测试以了解其工作方式。现在我什至都不用对象填充,因为我不理解如何在不调用另一个队列的情况下开始队列。无论如何,现在我只是打电话给我,但我认为我仍然缺少一些东西。任何提示都很棒!谢谢。 RunnableObject类: 问题答案: 你应该循环

  • 问题内容: 我有一个需要登录的服务器端功能。如果用户已登录,则函数将在成功返回1。如果没有,该函数将返回登录页面。 我想使用Ajax和jQuery调用该函数。我要做的是使用普通链接提交请求,并应用点击功能。如果用户未登录或功能失败,我希望Ajax调用返回true,以便href触发。 但是,当我使用以下代码时,该函数在Ajax调用完成之前退出。 如何将用户正常重定向到登录页面? 问题答案: 如果您不

  • 问题内容: 当使用简单的回调(例如下面的示例)时: 如何更改功能以使用异步/等待?具体来说,假设“ someEvent”被保证只能被调用一次,那么我希望函数测试是一个异步函数,该异步函数在执行回调之前不会返回,例如: 问题答案: 不是魔术。异步函数是可以为您解开Promises的函数,因此您需要返回一个Promise才能起作用。像这样: 然后 但这也是一个谎言,因为异步函数也返回Promises本

  • 使用以下示例中的简单回调时: 如何将函数更改为使用异步/等待?具体地说,假设某个事件保证被调用一次并且只有一次,我希望函数测试是一个异步函数,直到执行回调才返回,例如: