我正在試驗承諾和異步函數。現在我有一個腳本,它應該讀取一個文件名爲filenames.txt
的文件並將其解析爲數組,以便另一個readFile
可以讀取每個文件的內容並將其記錄到控制檯。不知怎的,控制檯得到undefined
。我試圖在異步fileRead上鍊承諾,但我得到undefined
這是我的代碼:
var Promise = require('bluebird');
var fs = require('fs');
var path = require('path');
getFilenames = function(){
return new Promise((resolve, reject) => {
fs.readFile('filenames.txt', 'utf8', (err,data) => {
if(err) return reject(err);
resolve(data);
});
});
}
getFilenames().then(fileNames => {
fileNames = fileNames.substr(0,fileNames.length-1).split(' ');
Promise.all(fileNames.map(file => {
return new Promise((resolve, reject) => {
fs.readFile(path.join('./',file), 'utf8', (err, data) => {
if (err) return reject (err);
resolve(data);
});
});
}));
}).then(values => console.log(values)).catch((err) => console.log(err));
之前'Promise.all' – Shaharyar