因此,我在几天的集合中有活动文档,我需要将所有活动合并到一个列表中。我认为我应该循环集合,然后循环活动,最后得到下面的代码,我不知道这是否是组合多个集合的最佳方法。更糟糕的是,我不知道我的列表何时准备好用于所有异步调用。
有什么建议吗?谢谢!
db.collection("calendar").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot ds : task.getResult().getDocuments()) {
ds.getReference().collection("thingstodo").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (DocumentSnapshot ds : task.getResult().getDocuments()) {
ScheduledItem item = ds.toObject(ScheduledItem.class);
itemsList.add(item);
}
}
});
}
}
});
The get()你正在使用的方法收藏参考(它是 Query 的子类)返回一个Task当文档准备好后,这个问题就解决了。不要向单个任务添加侦听器,而是将所有任务收集到一个列表中,并将其传递给任务.whenAllComplete()当整组完成时做出回应。然后,您可以根据需要检查所有任务的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)