java - 如何等待 Android Firestore 中的嵌套任务?
问题描述
我有以下方法:
public static void getRecipe(DocumentReference DR){
Recipe r = new Recipe();
/*First Firestore Query! - Get the recipe*/
DR.get().addOnCompleteListener(task -> {
if (task.isSuccessful() && task.getResult() != null) {
r.addStuff(...);
r.addMoreStuff(...);
r.addEvenMoreStuff(...);
/*Second Firestore Query(s)! - Get the ingredient(s)*/
for(DocumentReference DR_ingredient : ingredients) {
Task<DocumentSnapshot> IngredientQuery = DR_ingredient.get();
IngredientQuery.addOnCompleteListener(t -> {
if (t.isSuccessful() && t.getResult() != null) {
/*even more stuff*/
}
});
}
//After all tasks are finished, we can finally put the recipe in our Database!
Task<Void> t = Tasks.whenAll(IngredientQueries);
t.addOnSuccessListener(unused -> {
addRecipe(r);
});
}
});
}
该方法使用 Firestore 来获取保存的配方,并进一步加载所选配方的成分。成分作为参考保存在配方中,并且必须根据 Firebase 再次加载。
我现在的问题是:如果我getRecipe(DocumentReference DR)
从另一个班级打电话,我怎么能等到所有内容都加载完毕,然后继续我的代码?
解决方案
推荐阅读
- c++ - cuSOLVER - cusolverSpScsrlsvqr 的设备版本比主机版本慢得多
- javascript - 数据不显示 ajax 和 javascript ci
- amazon-web-services - AWS:并发队列系统?
- python - 有没有办法知道 setup.py 中的 pip 正在安装哪些软件包?
- python - VSCode中jupyter笔记本中的交互式python 3d绘图
- jpa - 如何编写条件查询生成器以从列表中选择全部?
- elasticsearch - 根据不同文档中相同字段的不同值进行过滤
- javascript - 计算 React 中的总价格
- javascript - 如何从一组遵循带有祖先数组(mongoDB)的树结构的数据构建目录(在 HTML5 / Vue 中)?
- reactjs - 如何在 ReactJS 中使用默认值编辑输入