Javascript Node.js文件系统:承诺一次读取所有文件
我正在使用Node.js文件系统构建一个文件路径数组。我想知道什么时候所有的文件都被读取了,这样我就可以进一步使用我的数组了 事件顺序:Javascript Node.js文件系统:承诺一次读取所有文件,javascript,node.js,fs,Javascript,Node.js,Fs,我正在使用Node.js文件系统构建一个文件路径数组。我想知道什么时候所有的文件都被读取了,这样我就可以进一步使用我的数组了 事件顺序: 进入文件夹 获取每个文件的路径 将每条路径放入一个数组中 完成后请告诉我 代码: 最好能粘上: Promise.all(files).then(() => { // do stuff }) 你的建议很有效,你试过了吗?下面是一种典型的方法: getFilesFromPath( path ).then( files => { cons
Promise.all(files).then(() => {
// do stuff
})
你的建议很有效,你试过了吗?下面是一种典型的方法:
getFilesFromPath( path ).then( files => {
const filePromises = files.map( readFile );
return Promises.all( filePromises );
}).then( fileContentsArray => {
//do stuff - the array will contain the contents of each file
});
您必须自己编写“readFile()”函数,但看起来您已经完成了这项工作。您的建议非常有效-您尝试过了吗?下面是一种典型的方法:
getFilesFromPath( path ).then( files => {
const filePromises = files.map( readFile );
return Promises.all( filePromises );
}).then( fileContentsArray => {
//do stuff - the array will contain the contents of each file
});
您必须自己编写“readFile()”函数,但看起来您已经完成了。谢谢Duncan。我在看你的代码,想弄清楚这件事。所以我的代码构建了一个数组,但是使用
Promise.all(files).then(()=>{…})代码>我应该在文件路径的整个数组准备好后立即使用它们。可以详细介绍一下映射位吗?.map()调用将文件数组转换为文件内容的承诺数组,然后我们在该数组上调用Promise.all(),将其转换为单个承诺对象,在解析所有小承诺时解析。大承诺分解为一个数组。此数组包含每个承诺的所有解析值。看到了吗,我觉得我错过了一些东西,因为这里没有任何东西被注销:getFilesFromPath('./dist')。然后((files)=>{console.log('called');})。
谢谢Duncan。我在看你的代码,想弄清楚这件事。所以我的代码构建了一个数组,但是使用Promise.all(files).then(()=>{…})代码>我应该在文件路径的整个数组准备好后立即使用它们。可以详细介绍一下映射位吗?.map()调用将文件数组转换为文件内容的承诺数组,然后我们在该数组上调用Promise.all(),将其转换为单个承诺对象,在解析所有小承诺时解析。大承诺分解为一个数组。此数组包含每个承诺的所有解析值。看到了吗,我觉得我错过了一些东西,因为这里没有任何东西被注销:getFilesFromPath('./dist')。然后((files)=>{console.log('called');})。