【发布时间】:2021-04-19 21:04:28
【问题描述】:
拜托,我知道这个问题之前已经回答过了。我已经阅读了this answer 和this article,但我还不知道如何修复我的代码。
我创建了一个function 来读取一些文件的内容和returns 一个new Promise。这是function:
// array of string representing each file's path
const allSpecFiles = [
'/path/to/the/file1.spec.js',
'/path/to/the/file2.spec.js',
'/path/to/the/file3.spec.js'
];
// method to read an individual file content & return a Promise
const readFileContent = file => {
return new Promise((resolve, reject) => {
fs.readFile(file, 'utf8', (err, data) => {
if (err) return reject(err);
return resolve(data);
});
});
};
现在,我正在尝试循环通过 strings 的 array 存储每个文件的 path,调用 readFileContent() 方法并将当前循环的值作为其 param 和 map() 方法传递,因为我想要使用每个文件的内容创建另一个 array 或 strings。
这是我尝试过的:
const allSpecFilesArr = allSpecFiles.map(async file => await readFileContent(file));
console.log(allSpecFilesArr); // I get Promise { <pending> }
我也试过像这样包装整个script:
(async () => {
const allSpecFilesArr = await allSpecFiles.map(file => readFileContent(file));
console.log(allSpecFilesArr); // still prints Promise { <pending> }
})();
我做错了什么?
【问题讨论】:
-
使用 Promise.all(allSpecFilesArr)
-
得打电话给
Promise.all(allSpecFilesArr).then(...)
标签: javascript node.js async-await es6-promise