我有一些保证.

 private loadFilterMetaData(): Array<Promise<any>> {
        const country = CatalogCountry.findAll();    
        const firm = CatalogFirm.findAll();    
        const promises = [country, firm];    
        return promises;
     }

我想把这个promises的结果保存为基于键的 struct ,asplicit数组或map.

有没有其他的方法来做到这一点,而不需要帮助数组的名称和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++;
            })

推荐答案

作为一个变体,你可以在一个对象中定义你的promises.然后,使用Object.values()Promise.all()组合来解决这些promise .最后,reduce()通过原始promises对象的键来关联解析的值:

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;
}, {});

Node.js相关问答推荐

使用OpenAI API时遇到问题

已知NPM无法在node.js V12上运行的问题

如何将我的Redis客户端配置为在禁用群集模式的情况下使用读取副本?

如何在MongoDB中更新嵌套数组

关于Node.js中的AES加密库的问题

使用参考中断Mongoose模型-Node.js

npm错误;无法解析依赖项:npm ERR!对等webpack@;5.x.x;来自@webpack-cli/serve@2.0.5";

在 azure blob 容器之间复制文件

如何在 require 方法中使用路径与node.js react ?

如何删除mongodb中嵌套数组中所有出现的数组元素

将环境变量从 GitHub 操作传递到 json

为什么需要在 NodeJS 应用程序中创建服务器?

如何在 AWS 上的 Amazon Linux AMI 中自动启动 node.js 应用程序?

如何可靠地散列 JavaScript 对象?

React Native ios build:找不到 node

如何在不全局安装的情况下在 Node REPL 中要求 node 模块?

遍历 NodeJS 中的一系列日期

如何仅在丢失的路由上将 Express.js 设置为 404?

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

如何设置 useMongoClient (Mongoose 4.11.0)?