1
以下代碼構建文件夾中文件的字典(關聯數組),跳過目錄和隱藏(。*)文件。係數是因爲console.log(file_dict)
在返回之前顯示字典。然而,當我打電話get_files
功能,從return file_dict
返回值是undefined
爲什麼fs.readdir返回`undefined`?
我敢肯定,這個問題是因爲readdir
是異步。所以,我需要切換到readdirSync
。但從概念上說,我不明白爲什麼異步版本中的返回值是未定義的。
我錯過了什麼?
文件explorer.js
var fs = require('fs');
var get_files = function() {
fs.readdir(__dirname + '/content/', function (err, files) {
if (!files.length) {
return console.log(' \033[31m No files to show\033[39m\n');
}
// called for each file walked in the directory
var file_dict = {};
var file_index = 0;
function file(i) {
var filename = files[i];
fs.stat(__dirname + '/' + filename, function (err, stat) {
if (stat.isDirectory() || filename[0] == '.' ) {
// do nothing, skip these dictionaries and dot files
} else {
++file_index;
file_dict[file_index] = filename;
};
if (++i == files.length) {
console.log('right before returning');
console.log(file_dict);
return file_dict;
} else {
// continue getting files
file(i);
};
});
}
file(0);
});
}
console.log (get_files()); // returns undefined
感謝。
大。大。我開始得到它,並且我添加了你添加的行。有用。我認爲我需要重構並嘗試以另一種方式做到這一點。 – 2013-05-04 00:01:31