我目前正在尝试在 firestore 中运行多个查询,并希望等待它们全部完成后再执行下一个代码。我已经阅读了几种可能的途径,但还没有找到一个好的 Android 示例。
public HashMap<String,Boolean> multipleQueries(String collection, String field, final ArrayList<String> criteria) {
HashMap<String,Boolean> resultMap = new HashMap<>();
for (int i = 0; i < criteria.size(); i++){
final int index = i;
db.collection(collection).whereEqualTo(field,criteria.get(i)).limit(1)
.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()) {
if(task.getResult().size() != 0 ){
resultMap.put(criteria.get(index),true);
} else {
resultMap.put(criteria.get(index),false);
}
} else {
resultMap.put(criteria.get(index),false);
}
}
});
}
return resultMap;
}
Since get()
返回一个Task
, 您可以使用.
但你将无法返回List
从这个函数,因为所有数据都是异步加载的。你能做的最好的就是返回结果Task.whenAll(...)
,它本身就是一个Task
。请参阅 Doug Stevenson 关于成为任务大师的精彩文章:https://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html https://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)