android - Android 和 Firebase Firestore:等待嵌套任务完成
问题描述
我认为这是一个简单的问题,我有 3 个主要集合:collection_A、collection_B 和 collection_C。问题是:我需要collection_A 的文档“A”。文档“A”包含一个数组属性“collection_B_uids”,在获取文档“A”之后,我需要获取collection_B_uids中collection_B的每个文档,所以我这样做了:
public Task foo() {
return FirebaseFirestore.getInstance().collection("collection_A").document("A").get()
.addOnSuccessListener(docA -> {
List<String> collection_B_uids = docA.get("collection_B_uids");
// ...
for (String uid : collection_B_uids) {
FirebaseFirestore.getInstance().collection("collection_B").document(uid).get()
.addOnSuccessListener(docB -> {
// ...
});
}
});
}
工作正常,但是我需要通过collection_B的每个文档中的另一个数组属性访问collection_C的一些文档。我想使用这样的回报foo
:
foo().addOnSuccessListener(...)
并且该 finaladdOnSuccessListener
应该在所有嵌套任务完成后执行。我已经Tasks.whenAllSuccess
在主任务中使用了,但是没有用。
我的猜测:
a) 一次使用 2 个监听器创建一个递归函数;
b) 使用continueWithTask
或continueWith
(首选);
c)创建一个全局AsyncTask
然后使用Tasks.await
(请不要)。
ps:我不是英语母语
解决方案
推荐阅读
- docker - `docker-compose.yml` 应该在自己的存储库中吗?
- jquery - .click() 不适用于标签和 href
- python - 如何扩展匹配文本输出的 Spacy 跨度以包含所有内容,直到下一次匹配?
- java - 我无法识别代码中的错误
- string - 具体MATLAB指令num2str的含义
- swift - 事件工具包中的授权错误。[命令行工具]
- django - Django重定向被浏览器中断?
- sql - 如何使用 UNION 从两个查询中返回相同数量的行?
- java - 密钥库文件的加载速度非常慢(javax.net.ssl.keyStore 属性)
- python - .rolling() 中的一些计算给出了 IndexError