【发布时间】:2019-08-16 23:56:36
【问题描述】:
我是 node.js 和 stackoverflow 的新手,我遇到了一些麻烦:我想读取两个文件并按特定顺序对它们进行处理。问题是我不知道哪个会先读完,所以我不知道如何确保它们以正确的顺序触发。
举个例子,假设我想读取两个文件并将它们写入响应中:
fs.readFile('./file1',(err,data) => {
res.write(data);
})
fs.readFile('./file2',(err,data) => {
res.write(data);
})
即使第二个文件小于第一个文件,我如何确保第一个文件将在第二个文件之前写入?
我能做到:
fs.readFile('./file1',(err,data) => {
res.write(data);
fs.readFile('./file2',(err,data) => {
res.write(data);
})
})
但它会像一个阻塞结构:在第一个结束之前无法开始读取第二个,这不是 Node.js 的重点......我说的对吗?
PS:对不起,如果问题是愚蠢的或我的英语不好
【问题讨论】:
-
它不像阻塞结构,因为它是异步和非阻塞的。 这不是 Node.js 的重点 - 重点是提供适合您需求的实现。如果您需要连续编写文件,那么您列出的是正确的方法。如果你想并行编写它们,那么你不需要嵌套 readFile。
-
您可以使用
promise和/或async/await。搜索这些主题,你会得到很多好的答案。 MDN 文档是一个很好的起点 -
我认为只有 2 种方法可以用 node 来实现。要么它的串联意味着第二个仅在第一个完成后才开始,要么让它们同时发生。在这两种情况下,您都编写了所需的代码。有什么困扰你?
-
@naga-elixir-jar 谢谢这似乎是我需要的