Javascript 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

我正在使用Node.js文件系统构建一个文件路径数组。我想知道什么时候所有的文件都被读取了,这样我就可以进一步使用我的数组了

事件顺序:

  • 进入文件夹
  • 获取每个文件的路径
  • 将每条路径放入一个数组中
  • 完成后请告诉我
  • 代码:

    最好能粘上:

    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');})。