【发布时间】:2015-01-28 19:19:15
【问题描述】:
我正在努力完成“Learn You The Node.js For Much Win!”研讨会,但我在练习 5 中遇到了问题。它要求你 Create a program that prints a list of files in a given directory, filtered by the extension of the files.
我传入了目录files,其中包含各种JavaScript、Ruby 和纯文本文件。它应该console.log() 每个文件都带有.js 扩展名。
var fs = require('fs');
function indexDirectory(directory) {
fs.readdir(directory, function(err, files) {
for (var i in files) {
if (i.indexOf('.js') != -1) {
console.log(files[i]);
}
}
});
}
indexDirectory('files');
当我使用node program.js 运行当前代码时,它不会输出任何内容。我错过了一些异步原则吗?我是否错误地使用了回调?任何帮助将不胜感激:)
【问题讨论】:
-
A
for in循环遍历键,而不是值;不要在数组上使用它。files.forEach(function (i) { … })。另请参阅stackoverflow.com/questions/500504/…。 -
for (var i = 0, file; i < files.length; i++) { file = files[i]}||files.forEach(function (file) {});||files.filter(function(file){ return FILE_IS_JS; }); -
@minitech 谢谢!这是有道理的
标签: javascript node.js asynchronous callback