dcp*_*450 5 javascript fs node.js
我正在遍历目录中的文件并将文件详细信息存储到数组中data。如果我不尝试运行fs.stat以获取诸如文件创建/编辑日期之类的内容,则以下代码将填充数组:
fs.readdir('../src/templates', function (err, files) {
if (err) {
throw err;
}
var data = [];
files
.forEach(function (file) {
try {
fs.stat('../src/templates/'+file,(error,stats) => {
data.push({ Name : file,Path : path.join(query, file) });
});
} catch(e) {
console.log(e);
}
});
res.json(data);
});
});
Run Code Online (Sandbox Code Playgroud)
如果我将数组移到data.push(...)外面,fs.stat则返回文件数据。在fs.stat它里面返回空。我认为这是一个异步问题,因为for循环正在运行并在fs.stat运行前完成。
我想我需要在这里使用诺言,但不能确定。
您对异步调用中的问题的看法是正确的。您可以使用 Promise,也可以使用fs.statSync(...),它返回一个fs.Stats对象并同步操作。
files.forEach(function (file) {
try {
var fileStats = fs.statSync('../src/templates/' + file);
data.push({
Name : file,
Path : path.join(query, file)
});
} catch(e) {
console.log(e);
}
});
Run Code Online (Sandbox Code Playgroud)