1

我的 node.js 应用程序需要几个文件。我知道建议异步读取文件,所以,显然我必须这样做:

fs.readFile("file1", function(...) {
  fs.readFile("file2", function(...) {
    fs.readFile("file3", function(...) {
       [my application]
    }
  }
}

但是,在这种情况下,文件将被顺序读取。

有没有办法并行读取许多文件,并且仍然确保应用程序在所有文件都加载后启动?

4

2 回答 2

3

挺容易。

var files = [...], remaining = files.length;
var callback = function () {
    remaining--;
    if (!remaining) {
        go();
    }
};
files.forEach(function(file) {
    fs.readFile(file, callback);
});
于 2012-12-20T07:28:19.947 回答
0

您可以使用现代的基于 Promise 的 API:

import {promises as fs} from 'fs';

function readFiles(files) {
  return Promise.all(
    files.map(path => fs.readFile(path))
  );
}

readFiles(['file1', 'file2', 'file3'])
  .then(fileContents => {
    console.log('All the files are read', fileContents);
  });
于 2021-12-17T09:17:43.520 回答