在promise中设置异步变量

时间:2019-11-19 14:13:06

标签: javascript node.js file express io

我有一个目标,可以通过一系列json文件进行映射,并将它们映射为对象并在node.js中返回它们,到目前为止,我有以下代码:


function getDirFiles(dataFolder) {
  return new Promise((resolve, reject) => {
    let fileNames = [];
    fs.readdir(dataFolder, (err, files) => {
      if (err) {
        console.log(err);
        reject(err);
      } else {
        files.forEach(file => {
          fileNames.push(file);
        });

        resolve(fileNames);

      }
    });
  });
}

let data = []
getDirFiles(dataFolder).then(files =>{
    files.forEach(async file =>{
        const fileName = __dirname + '/parsed_json_data' + '/' + file
       await fs.readFile(fileName , 'utf8', async function(err, data){
            if(err) throw err;
            data = await JSON.parse(data);
        })
    })
})


console.log(data) //return empty array like it was initialized

因此,首先我返回一个promise,并调用.then()来解析该函数​​,但是由于下一个操作也是异步的,因此我想在代码继续之前等待该操作。如何做到这一点,以便我可以从所有文件中返回json?

0 个答案:

没有答案