gpt4 book ai didi

node.js - fs.readFileSync 是否会阻塞 Node 正在运行的线程?

转载 作者:太空宇宙 更新时间:2023-11-03 22:07:15 25 4
gpt4 key购买 nike

我知道 fs.readFileSync 会阻塞我的代码,但它是否也会阻塞 Node 服务器运行的线程?

fs.readFileSync只是fs.readFile的语法糖吗?

最佳答案

我认为它可能会根据您的代码而有所不同,但请考虑运行以下命令时发生的情况的差异:

这将是我们的服务器代码:

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 访问服务器,请求将永远不会完成,因为 Node 在尝试完成文件读取时被占用。

相反,如果我们使用fs.readFile():

fs.readFile("/dev/urandom", f => {
console.log(f);
});

每当我们运行 cURL 时,我们都会收到一个请求,并且会在服务器进程中看到“收到请求”,因为 Node 没有与加载文件相关。

所以回答你的问题:不,readFileSync 不仅仅是 readFile 的语法糖。

关于node.js - fs.readFileSync 是否会阻塞 Node 正在运行的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52098850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com