这允许读取操作对可能使用底层 libuv 线程池的其他活动的影响较小，但意味着将完整文件读入内存需要更长的时间。
fs.readFile() method asynchronously reads the contents of a file into
memory one chunk at a time, allowing the event loop to turn between each chunk.
This allows the read operation to have less impact on other activity that may
be using the underlying libuv thread pool but means that it will take longer
to read a complete file into memory.
The additional read overhead can vary broadly on different systems and depends on the type of file being read. If the file type is not a regular file (a pipe for instance) and Node.js is unable to determine an actual file size, each read operation will load on 64 KiB of data. For regular files, each read will process 512 KiB of data.
For applications that require as-fast-as-possible reading of file contents, it
is better to use
fs.read() directly and for application code to manage
reading the full contents of the file itself.
The Node.js GitHub issue #25741 provides more information and a detailed
analysis on the performance of
fs.readFile() for multiple file sizes in
different Node.js versions.