我有一些平衡承诺。
private loadFilterMetaData(): Array<Promise<any>> {
const country = CatalogCountry.findAll();
const firm = CatalogFirm.findAll();
const promises = [country, firm];
return promises;
}
我想将这些承诺的结果保存为基于键的结构、关联数组或映射。
有没有其他方法可以在没有名称辅助数组和 foreach 计数器变量的情况下做到这一点?
this.metaDataInjectableFilters=['country','firm'];
const metaData = await Promise.all(metaDataPromises);
let i = 0;
metaData.forEach(resolved => {
this.metaData.set(
this.metaDataInjectableFilters[i],
resolved
);
i++;
})
作为一种变体,您可以在对象中定义您的承诺。然后,结合使用
Object.values()
和 Promise.all()
来解决这些 Promise。最后,reduce()
通过原始promise对象的键来关联解析的值:
const promises = {
country: CatalogCountry.findAll(),
firm: CatalogFirm.findAll(),
};
const results = await Promise.all(Object.values(promises));
const metaData = Object.keys(promises).reduce((acc, key, index) => {
acc[key] = results[index];
return acc;
}, {});