【问题标题】:Why future is not getting complete?为什么未来还没有完成?
【发布时间】:2019-04-15 14:13:45
【问题描述】:

我需要获取此集合中的所有文档,这些查询有多少 - 我已成功接收所有文档,但未来永远不会结束。

我尝试了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);
    });
  }

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

【问题讨论】:

    标签: dart flutter google-cloud-firestore


    【解决方案1】:

    您需要返回一些东西,可以是您正在使用的 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;
        });
    

    【讨论】:

      【解决方案2】:

      您将promisesasync await 混合在一起!

      【讨论】:

      • 你能举个例子吗?
      猜你喜欢
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      相关资源
      最近更新 更多