为什么未来没有完成?

时间:2019-04-15 14:13:46

标签: dart flutter google-cloud-firestore

我需要获取此集合中的所有文档,其中包括很多查询-我已经成功接收了所有文档,但未来永无止境。

我尝试了WhenComplete,但仍然无法正常工作。

Future<Null> getOldVac(anId) async {
    print("getOldVac");
    await Firestore.instance
        .collection("users")
        .document(userId)
        .collection("animals")
        .document(anId)
        .collection("anMedication")
        .where("type", isEqualTo: "vac")
        .where("result", isEqualTo: "")
        .snapshots()
        .forEach((onValue) {
      print(onValue);
    }).then((onValue) {
      print("Done");
    }).catchError((onError) {
      print(onError);
    });
  }

在所有将来完成后,我需要打印“完成”。

2 个答案:

答案 0 :(得分:0)

您需要返回一些信息,可以是您正在使用的nullvoid或抛出一些错误。

尝试像这样将return放在await的前面:

return await Firestore.instance
        .collection("users")
        .document(userId)
        .collection("animals")
        .document(anId)
        .collection("anMedication")
        .where("type", isEqualTo: "vac")
        .where("result", isEqualTo: "")
        .snapshots()
        .forEach((onValue) {
      print(onValue);
      return null;
    }).then((onValue) {
      print("Done");
      return null;
    }).catchError((onError) {
      print(onError);
      throw onError;
    });

答案 1 :(得分:0)

您正在将promisesasync await混合!