为了账号安全,请及时绑定邮箱和手机立即绑定

异步/等待功能无法正常工作

异步/等待功能无法正常工作

互换的青春 2021-11-12 18:32:47
我有一个函数可以从文件中读取日期并将它们存储到一个数组中。它是通过 async/await 功能异步实现的。问题是它以错误的顺序执行:const util = require('util');const fs = require('fs');const path = require('path');const readFile = util.promisify(fs.readFile);const readDirectory = util.promisify(fs.readdir);// Retrieve logs from logs files and store them into an arrayconst getAuditLogsData = async () => {    const logsFolderPath = path.join(__dirname, '../', 'logs');    const logData = [];    try {        const files = await readDirectory(logsFolderPath);        // 1ST - OK        console.log(files);        files.forEach(async (file) => {            const content = await readFile(logsFolderPath + '/' + file, 'utf-8');            const logList = JSON.parse(content);            logList.forEach((log) => {                // 4TH - NOT OK                console.log(1)                logData.push(log);            });        });        // 2ND - NOT OK        console.log(2);    } catch (error) {        console.log(error);    }    // 3RD - NOT OK, EMPTY ARRAY (deta is 100% pushing in the forEach loop)    console.log(logData);    return logData;};module.exports = {    getAuditLogsData};async/await 承诺有什么问题吗?
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

Try await Promise.all(files.map(async _ => {...})),但请记住,.all在第一次失败时会拒绝。


查看完整回答
反对 回复 2021-11-12
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信