首页 > 解决方案 > 如何等待 Android Firestore 中的嵌套任务?

问题描述

我有以下方法:

    public static void getRecipe(DocumentReference DR){
        Recipe r = new Recipe();

        /*First Firestore Query! - Get the recipe*/
        DR.get().addOnCompleteListener(task -> {
                if (task.isSuccessful() && task.getResult() != null) {

                    r.addStuff(...);
                    r.addMoreStuff(...);
                    r.addEvenMoreStuff(...);   
              
                    /*Second Firestore Query(s)! - Get the ingredient(s)*/
                    for(DocumentReference DR_ingredient : ingredients) {
                        Task<DocumentSnapshot> IngredientQuery = DR_ingredient.get();

                        IngredientQuery.addOnCompleteListener(t -> {
                                    if (t.isSuccessful() && t.getResult() != null) {                                      
                                         /*even more stuff*/
                                    }
                        });
                    }


                    //After all tasks are finished, we can finally put the recipe in our Database!
                    Task<Void> t = Tasks.whenAll(IngredientQueries);
                    t.addOnSuccessListener(unused -> {
                        addRecipe(r);
                    });
                 
                }
           });
}

该方法使用 Firestore 来获取保存的配方,并进一步加载所选配方的成分。成分作为参考保存在配方中,并且必须根据 Firebase 再次加载。

我现在的问题是:如果我getRecipe(DocumentReference DR)从另一个班级打电话,我怎么能等到所有内容都加载完毕,然后继续我的代码?

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


推荐阅读