node.js - fs.readFileSync 是否阻塞线程节点正在运行?
问题描述
我知道这会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 访问服务器,请求将永远不会完成,因为节点被捆绑试图完成文件读取。
相反,如果我们使用fs.readFile()
:
fs.readFile("/dev/urandom", f => {
console.log(f);
});
每当我们运行 cURL 时,我们都会收到一个请求,并且我们会在服务器进程中看到“Got request”,因为节点与加载文件无关。
所以回答你的问题:不,readFileSync
不仅仅是readFile
.
推荐阅读
- spring-data-rest - 未找到搜索 API EntityRepresentationModel
- node.js - 在nodejs中提取多种类型的压缩文件
- r - HTML Rvest 抓取不显示表格
- html - 如何在 Django 中将多个上下文呈现为相同的 HTML
- reactjs - React 和 mobx :在商店中使用域类
- javascript - fullpage 不是构造函数问题
- python - 时间序列数据的交叉验证:将用户定义的具有内部列表的元组列表转换为用于在 GridSearchCV 中应用的元组列表
- javascript - 反向 q-滚动区域
- node.js - 使用缓冲区 nodejs 构建浮点值
- python - Python 无法打开文本文件:“FileNotFoundError”