基於在這裏找到的代碼片段在stackoverflow,我想讀取目錄中的所有文件,然後繼續。 我已經添加了一個承諾,但這不知何故無效。爲什麼承諾先解決?
我的目錄包含2個文件和控制檯日誌輸出是:
承諾解決
內部文件名
內部文件名
內readFiles
內readFiles
function readFiles(dirname, onFileContent, onError) {
return new Promise((resolve, reject) => {
fs.readdir(dirname, function(err, filenames) {
filenames.forEach(function(filename) {
console.log('inside filenames');
fs.readFile(dirname + filename, 'utf-8', function(err, content) {
onFileContent(filename, content);
});
});
});
});
}
var data = [];
readFiles('datadir/', function(filename, content) {
console.log('inside readFiles');
data.push(filename);
}).then(
console.log('promise resolved');
//proceed handling the data-array
);
您的代碼甚至不會用分號執行,但它看起來像你應該有'然後(函數(){'和你剛纔'then'假設有 –
我沒有看到你的承諾 - 你永遠不會解決它,你使用回調來獲取文件內容。 – Jamiec
@Jamiec點的承諾將等到所有文件都被讀取 –