Node.js nodejs中for循环中fs readfile的索引

Node.js nodejs中for循环中fs readfile的索引,node.js,Node.js,我编写以下nodejs脚本。在脚本中,我希望索引在fs.readFile中存储增量值。 顺便说一下,note_files是一个数组,它存储6个文件路径。在我的例子中,需要通过fs.readFile块中的index值获取当前文件路径 那么,如何在fs.readFile块中获取for循环索引值呢 对于(索引=0;索引文件。Furace

我编写以下nodejs脚本。在脚本中,我希望
索引
fs.readFile
中存储增量值。 顺便说一下,
note_files
是一个数组,它存储6个文件路径。在我的例子中,需要通过
fs.readFile
块中的
index
值获取当前文件路径

那么,如何在
fs.readFile
块中获取for循环索引值呢


对于(索引=0;索引
在这种情况下,我建议使用承诺,因为它们更容易解释此类问题。您可以使用节点标准库中的
util
模块提供类似
readFile
的方法

const { promisify } = require("util");
const path = require("path")
const fs = require("fs");

const readFileAsync = promisify(fs.readFile);

const note_files = [/* insert filepaths here */];

Promise.all(
  note_files.map(filepath => readFileAsync(path.relative(__dirname, filepath)))
).then(files => {
  files.forEach((file, i) => {
    console.log(i);
  });
}).catch(err => {
  console.log("an error occured while loading some of the files")
});

这段代码将把文件路径映射到promises,将它们打包成1,并给出读取文件。只有这样,我们才能循环文件并访问索引。

是要按顺序遍历文件,还是要同时加载所有文件并在加载后循环?为什么不直接使用readFileSync?我可以调用
main()
函数来处理promise中的文件内容
file
,然后阻塞?可以。
main()
做什么?内部代码< >文件。Furace文件<代码>是一个字节数组。@ Reijo,如果有很多文件,比如说接近3000,每个文件超过1MB,这会导致所有文件内容都在内存中慢下来吗?@ ChrChestalx当有这么多文件时,你可能应该考虑分批工作。因此,限制您一次读取和处理的文件数量。您可以尝试一种更简单的方法,使用文件数量有限的for-await循环,或者使用一种更复杂的方法,使用“任务队列”和最大文件数,使用一个任务表示读取和处理一个文件。如果您真的对性能感兴趣,请注意,许多小文件总是比少数几个大文件慢。在这种情况下,您可以查看nodejs@ChrisTomAlx中的工作线程,它是管理和监视nodejs进程的好工具。也许这会帮助你分析你的课程需求。