使用asynchronous和等待减less

我知道,其他文章涵盖了这个问题,但我需要使用它作为const所以它只是在运行时初始化

这是我的问题,我是nodejs的新手,并在网上search了很多。 没有find任何解决scheme接近我的需要

 const apis = ['log', 'get', 'all'] const loggers = apis.reduce(async (memo, api) => { try { await fs.stat(path.join(process.cwd() + config.application.log.dir, api)); } catch (e) { await fs.mkdir(path.join(process.cwd() + config.application.log.dir, api)); } memo[api] = new (winston.Logger)({ transports: [ new winston.transports.File({ timestamp: () => (new Date().toLocaleTimeString()), datePattern: 'yyyy-MM-dd', level: config.application.mode === 'test' ? 'emerg' : 'info', filename: path.join(process.cwd(), config.application.log.dir, api, `${api}.log`), maxsize: 1024 * 1024 * 100, // 100MB colorize: false, prepend: true, json: false, }), ], }); return await Promise.resolve(memo); }, {}); 

我的问题是,结果是诺言任何想法如何改变?

编辑:———————–

我终于select了这个解决scheme,并在快速初始化时从app.ts中调用它(如果你有更好的主意,请不要犹豫添加它):

 export const loggerInitialisation = async function (): Promise<void> { // Create all log folders await Promise.all(apis.map(async (api) => { try { await fs.stat(path.join(process.cwd() + config.application.log.dir, api)); } catch (e) { await fs.mkdir(path.join(process.cwd() + config.application.log.dir, api)); } })); // Create for each log folder a winston logger and transport loggers = apis.reduce((memo, api) => { memo[api] = new (winston.Logger)({ transports: [ new winston.transports.File({ timestamp: () => (new Date().toLocaleTimeString()), datePattern: 'yyyy-MM-dd', level: config.application.mode === 'test' ? 'emerg' : 'info', filename: path.join(process.cwd(), config.application.log.dir, api, `${api}.log`), maxsize: 1024 * 1024 * 100, // 100MB colorize: false, prepend: true, json: false, }), ], }); return memo; }, {}); };