首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >键入'Budget[]‘不能指定键入'Promise<Budget[]>’Property‘,那么'Budget[]’类型中缺少‘

键入'Budget[]‘不能指定键入'Promise<Budget[]>’Property‘,那么'Budget[]’类型中缺少‘
EN

Stack Overflow用户
提问于 2018-01-27 05:36:23
回答 1查看 842关注 0票数 0

我要回Promise<Budget[]>。但它显示错误为:

ts类型'Budget[]‘不能指定键入’承诺‘。 属性‘in’在'Budget[]‘类型中缺失。让预算: Budget[]

您能告诉我如何从下面的方法返回Promise<Budget[]>吗?

代码语言:javascript
复制
 createBudgets(data: Budget[], projectId: string): Promise<Budget[]> {
    let budgets: Budget[] = [];
    forEach(data, async (d) => {
      const budgetId: string = this.fireStore.createId();
      d.id = budgetId;
      budgets.push(d);
      await this.fireStore.doc<Budget>(`projects/${projectId}/budgets/${budgetId}`).set({
        id: budgetId,
        amount: d.amount,
        contingency: d.contingency,
        budgetGroup: d.budgetGroup,
        creationTime: moment().format()
      });
    });
    return budgets;// error shows here?
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-27 08:25:04

如果要等待所有set方法调用完成执行,则需要将它们添加到数组中,并使用Promise.all等待它们完成:

代码语言:javascript
复制
async createBudgets(data: Budget[], projectId: string): Promise<Budget[]> {
    let budgets : Budget[] = [];
    await Promise.all(data.map(async (d) => {
        const budgetId: string = this.fireStore.createId();
        d.id = budgetId;
        budgets.push(d);
        await this.fireStore.doc<Budget>(`projects/${projectId}/budgets/${budgetId}`).set({
            id: budgetId,
            amount: d.amount,
            contingency: d.contingency,
            budgetGroup: d.budgetGroup,
            creationTime: moment().format()
        });
    }));
    return budgets;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48472945

复制
相关文章

相似问题

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