我要回Promise<Budget[]>。但它显示错误为:
ts类型'Budget[]‘不能指定键入’承诺‘。 属性‘in’在'Budget[]‘类型中缺失。让预算: Budget[]
您能告诉我如何从下面的方法返回Promise<Budget[]>吗?
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?
}发布于 2018-01-27 08:25:04
如果要等待所有set方法调用完成执行,则需要将它们添加到数组中,并使用Promise.all等待它们完成:
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;
}https://stackoverflow.com/questions/48472945
复制相似问题