首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用Future的函数也需要成为Future吗?

调用Future的函数也需要成为Future吗?
EN

Stack Overflow用户
提问于 2021-10-01 14:17:39
回答 1查看 37关注 0票数 0

我有一个在其中调用Future的函数。现在我不确定第一个函数是否也需要等待数据的未来。下面是我的代码:

代码语言:javascript
运行
复制
  FireBaseHandler handler = FireBaseHandler();

  saveRows() {
    handler.saveRows(plan.planId, plan.rows); ///this is a future
  }

在我的FireBaseHandler类中,我有这样的未来:

代码语言:javascript
运行
复制
  final CollectionReference usersCol =
      FirebaseFirestore.instance.collection('users');

  Future saveRows(String id, data) async {
    return await usersCol.doc(myUser.uid).collection('plans').doc(id)
        .update({'rows': data});
  }

那么第一个函数也需要是一个未来吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-01 14:26:48

您可以在sync函数中使用async函数。但是这样你就失去了对结果执行await的能力。并且只允许在标记为async的函数中使用await,这会将我们引向该函数的结果Future。所以,是的,如果你需要等待结果,两个函数都必须是Future函数。

编辑:如果您需要包装器函数为sync,但仍然能够从内部async函数检索结果,则可以使用回调:

代码语言:javascript
运行
复制
  saveRows(Function(dynamic) callback) {
    handler.saveRows(plan.planId, plan.rows).then((result){
      callback(result);
});
  }

这样,在调用函数后的任何时间点都会检索到结果(代码不是await格式的)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69407401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档