【发布时间】:2021-04-18 19:23:20
【问题描述】:
我已经创建了一个function 来递归地遍历directory(也是它的子文件夹)并检索所有具有特定扩展名的文件。
现在我创建了另一个function,它将获取检索到的文件的array,访问其内容并返回另一个array,其中包含每个文件的文本内容。
这是function 获取和返回每个文件的文本内容的代码:
const readFileContent = files => {
files.forEach(file => {
return fs.readFile(file, 'utf8', (err, data) => {
if (err) throw err;
console.log(data); // print all the text for each file
return [data];
});
});
};
const allFilesTextContent = readFileContent(allSpecFiles);
console.log(allFilesTextContent); // prints undefined
但是,当我将function 存储在另一个variable 中并打印它时,我得到undefined。如果我在循环内打印,我会得到每个文件的文本内容。我也尝试将push() 转换为新的array,如下所示:
const readFileContent = files => {
let results = [];
files.forEach(file => {
fs.readFile(file, 'utf8', (err, data) => {
if (err) throw err;
console.log(data); // print all the text for each file
results.push(data);
});
});
return results;
};
const allFilesTextContent = readFileContent(allSpecFiles);
console.log(allFilesTextContent); // print an empty array - []
我做错了什么?
【问题讨论】:
-
您无法在
callback之外访问async function结果 -
你能为我提供一个可行的解决方案吗@ShivamSood 我一直在尝试将我的代码包装在
async/await但没有运气
标签: javascript node.js arrays function loops