我正在使用 JavaScript 和 Nodejs 测试一些东西。我想向用户询问一个文件夹,它会显示文件夹中文件的名称、文件类型(可执行文件、文本文件...)和更改日期(上次更改或修改文件的时间)。代码如下:
fs.stat(testFolder, (err, stats) => {
var time = stats.ctime
var day = time.getDay()
var month = time.getMonth()
var year = time.getFullYear()
var date = day + " " + month + " " + year
})
const testFolder = './tests/'
const fs = require('fs')
fs.readdir(testFolder, (err, files) => {
files.forEach(file => {
var tmp = file.split(".")
var name = tmp[0]
var kind = kinds[tmp[1]]
if(kind == null) {
kind = "File"
}
$( "#test" ).append( "<tr class=\"file\">\
<td>" + name + "</td>\
<td>" + kind + "</td>\
<td>" + date + "</td>\
</tr>" );
});
})
我有可变的时间来保存完整的日期。 当我使用 console.log(date) 时它可以工作。
但是当我尝试使用 jQuery 将日期变量添加到追加方法时,它给了我一个错误:
您在异步函数中定义并设置日期变量。无法保证回调在 readdir-callback 运行之前运行。将 readdir 调用移至 fs.stat 回调中。
const testFolder = './tests/';
const fs = require('fs');
fs.stat(testFolder, (err, stats) => {
var time = stats.ctime;
var day = time.getDay();
var month = time.getMonth();
var year = time.getFullYear();
var date = day + " " + month + " " + year;
fs.readdir(testFolder, (err, files) => {
files.forEach(file => {
var tmp = file.split(".");
var name = tmp[0];
var kind = kinds[tmp[1]];
if(kind == null) {
kind = "File";
}
$( "#test" ).append( "<tr class=\"file\">\
<td>" + name + "</td>\
<td>" + kind + "</td>\
<td>" + date + "</td>\
</tr>" );
});
});
});