我試圖從目錄中的幾個文件中顯示一些數據,但是其中的內容以錯誤的順序打印出來。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