等待 Firestore 查询完成

我目前正在尝试在 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;


}


MMMHUHU
浏览 58回答 1
1回答

开满天机

由于get()返回 a&nbsp;Task,您可以使用Tasks.whenAll(...)。但是您将无法List从此函数返回 a,因为所有数据都是异步加载的。您能做的最好的事情就是从 返回结果Task.whenAll(...),它本身就是一个Task.&nbsp;请参阅 Doug Stevenson 关于成为任务大师的精彩文章:https ://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java