私は "learnyounode"を使ってnode.jsを学習しようとしています。フォルダパスとファイル拡張子タイプを入力し、そのフォルダ内のそのタイプのすべてのファイルを出力として出力するようになっているエクササイズがあります。node.jsのコールバック関数からオブジェクトを配列にプッシュできないのはなぜですか?
var fs = require('fs');
var pathModule = require('path');
var path = process.argv[2];
var ext = '.'.concat(process.argv[3]);
filteredList = [];
fs.readdir(path,function doneReading(err, list){
for(var i = 0; i < list.length; i++){
if(pathModule.extname(list[i]) == ext){
filteredList.push(list[i]);
}
}
})
for(var i = 0; i < filteredList.length; i++){
console.log(filteredList[i]);
}
と
filteredList.push(list[i]);
がfilteredListの内容には影響しません何らかの理由:私はこのプログラムを構築しました。どうしてこれなの?私は、console.logをreaddir関数の中に移動することで、エクササイズを解決しましたが、なぜpsuhが動作しないのかわかりません。
fs.readdirは非同期です:これにあなたのコードを変更してみてください –