我目前正在尝试在 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;}
1 回答
开满天机
TA贡献1786条经验 获得超13个赞
由于get()
返回 a Task
,您可以使用Tasks.whenAll(...)
。
但是您将无法List
从此函数返回 a,因为所有数据都是异步加载的。您能做的最好的事情就是从 返回结果Task.whenAll(...)
,它本身就是一个Task
. 请参阅 Doug Stevenson 关于成为任务大师的精彩文章:https ://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html
添加回答
举报
0/150
提交
取消