Android和Firebase Firestore:等待嵌套任务完成

时间:2020-01-29 15:42:42

标签: android firebase google-cloud-firestore task

我认为这是一个简单的问题,我有3个主要集合:collection_A,collection_B和collection_C。问题是:我需要collection_A的文档“ A”。文档“ A”包含一个数组属性“ collection_B_uids”,在获取文档“ A”之后,我需要获取collection_B_uids中的每个collection_B文档,因此我这样做了:

public Task foo() {
    return FirebaseFirestore.getInstance().collection("collection_A").document("A").get()
        .addOnSuccessListener(docA -> {
            List<String> collection_B_uids = docA.get("collection_B_uids");
            // ...
            for (String uid : collection_B_uids) {
                FirebaseFirestore.getInstance().collection("collection_B").document(uid).get()
                    .addOnSuccessListener(docB -> {
                        // ...
                    });
            }
        });
}

工作正常,但随后我需要通过collection_B的每个文档中的另一个数组属性访问collection_C的某些文档。我想这样使用foo的返回值:

foo().addOnSuccessListener(...)

最后的addOnSuccessListener应该在所有嵌套任务完成之后执行。我已经在主要任务中使用了Tasks.whenAllSuccess,但是没有用。

我的猜测:

a)一次使用2个监听器创建一个递归函数;

b)使用continueWithTaskcontinueWith(首选);

c)创建一个全局AsyncTask,然后使用Tasks.await(请不要)。

Ps:我不是英国人

0 个答案:

没有答案