承诺一切地图或对象

问题描述 投票:0回答:1

我有一些平衡承诺。

 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++;
            })
node.js promise
1个回答
0
投票

作为一种变体,您可以在对象中定义您的承诺。然后,结合使用

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;
}, {});
© www.soinside.com 2019 - 2024. All rights reserved.