为了账号安全,请及时绑定邮箱和手机立即绑定

等待 Firestore 查询完成

等待 Firestore 查询完成

MMMHUHU 2022-12-28 10:45:35
我目前正在尝试在 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


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信