我试图从目录中的几个文件中显示一些数据,但是其中的内容以错误的顺序打印出来。Node.js以错误的顺序循环打印
fs.readdir('files/sets', function(err, files){
for(var i = 0; i < files.length; i++){
console.log("_______________________________");
readFile(files[i]);
}
});
function readFile(file){
csv()
.from.path('files/training_set/'+file, {delimiter: ','})
.transform(function(row){
console.log(row);
});
}
每个文件都包含两行:
文件中的一个:
John:
Hey there!
文件中的两个:
Mary:
Whats up!
我期望的输出是这样的
____________________
John
Hey there!
____________________
Mary
Whats up!
但我真正得到
____________________
____________________
John
Mary
Hey there!
Whats up!
我一直在寻找,并认为它是与异步函数和循环是快速。但我似乎无法解决这个问题。我尝试了以下方法,但结果相同。
fs.readdir('files/sets', function(err, files){
for(var i = 0; i < files.length; i++){
(function(j){
console.log("_______________________________");
readFile(files[j]);
})(i)
}
});
看起来更像是你希望节点按给定的顺序读取文件,而不是? – adeneo
正确,我期待它打印该行,读取一个文件,打印另一行,然后读取下一个文件。 – wazzaday
嗯,是的,但是按照什么顺序读取文件,您如何知道readdir按照您期望的顺序读取目录中的文件。在迭代之前对文件数组进行排序以解决此问题,但是您必须通过文件名告诉我们您期望的顺序? – adeneo