我知道fs.readFileSync
会阻止我的代码,但是它还会阻止运行Node服务器的线程吗?
fs.readFileSync
只是fs.readFile
的语法糖吗?
答案 0 :(得分:0)
我认为它可能会根据您的代码而有所不同,但是请考虑每次运行以下命令时发生的变化:
这将是我们的服务器代码:
const http= require("http");
const fs = require("fs");
http.createServer((req, res) => {
console.log("Got request");
res.end("Hello\n");
}).listen(3000);
如果我们运行fs.readFileSync()
并尝试加载/dev/urandom
(不会完成):
const f = fs.readFileSync("/dev/urandom");
console.log(f);
并尝试使用cURL访问服务器,该请求将永远不会完成,因为节点试图完成文件读取已被捆绑。
相反,如果我们使用fs.readFile()
:
fs.readFile("/dev/urandom", f => {
console.log(f);
});
每当运行cURL时,我们都会收到一个请求,并在服务器进程中看到“收到请求”,因为节点与并没有绑定文件。
因此回答您的问题:不,readFileSync
不仅仅是readFile
的语法糖。