-1
すべての(テキスト)ファイルを特定のディレクトリから読み込み、再帰的にsubdirecotyです。ファイルを読み込んでその結果をグローバル変数に追加できました。私はすべての操作の最後に変数にアクセスしたいです。私は約束をしているが、私はそれにアクセスすることができない。私は解決策を見つけたと思いますが、私はまだそれがどのように機能するかについて混乱しています ノードjs再帰関数付きの約束
var file_path = `C:\\Users\\HP\\Desktop\\test_folder`;
const fs = require('fs');
var final_array = [];
let getFolderTree = function(file_path) {
return new Promise(function(resolve, reject) {
fs.readdir(file_path, function(err, folders) {
if (err) {
console.log("error reading folder :: " + err);
} else {
if (folders.length !== 0) {
for (let i = 0; i < folders.length; i++) {
if (folders[i].endsWith("txt")) {
let text_file_path = file_path + `\\` + folders[i];
fs.readFile(text_file_path, function(error_read, data) {
if (error_read) {
console.log("error reading " + error_read);
} else {
return resolve(final_array.push(data));// want to access final_array at the end of all operations
}
});
} else {
let current_path = file_path + `\\` + folders[i];
getFolderTree(current_path);
}
}
}
}
});
});
}
getFolderTree(file_path).then(function() {
console.log(final_array); // this is not working
});
を理解する助けてください よりよい解決策を持っているなら、私に知らせてください、あなたは 'then'を追加しますcatch(/ * handle error * /); 'また、あなたのコードを読んでいるなら、あなたの' for() 'ループは、あなたが望んでいることをするつもりはありません。そして、あなたはいつでもあなたの約束が解決/拒否されるようにしたいと思うでしょう。 –