gpt4 book ai didi

node.js - 如何将使用 fs.readFileSync() 的 Node.js 代码重构为使用 fs.readFile()?

转载 作者:IT老高 更新时间:2023-10-28 21:54:46 30 4
gpt4 key购买 nike

我试图了解 Node.js 中的同步与异步,尤其是在读取 HTML 文件时。

在请求处理程序中,我正在使用的同步版本如下:

    var fs = require("fs");
var filename = "./index.html";
var buf = fs.readFileSync(filename, "utf8");

function start(resp) {
resp.writeHead(200, { "Content-type": "text/html" });
resp.write(buf);
resp.end();
}

exports.start = start;
  1. 使用 readFile() 的版本是什么?
  2. 我知道readFile是异步的,所以理论上我应该等待整个文件被读取后再渲染,所以我应该引入一个addListener吗?我可能会混淆不同的东西。

编辑:我曾尝试像这样重构代码:

    var fs = require("fs");
var filename = "./index.html";
function start (resp) {
resp.writeHead(200, { "Content-Type": "text/html" });
fs.readFile(filename, "utf8", function (err, data) {
if (err) throw err;
resp.write(data);
});
resp.end();
}

我得到一个空白页。我猜是因为它应该等待所有数据被读取,在 resp.write(data) 之前,我该如何发出这个信号?

最佳答案

var fs = require("fs");
var filename = "./index.html";

function start(resp) {
resp.writeHead(200, {
"Content-Type": "text/html"
});
fs.readFile(filename, "utf8", function(err, data) {
if (err) throw err;
resp.write(data);
resp.end();
});
}

关于node.js - 如何将使用 fs.readFileSync() 的 Node.js 代码重构为使用 fs.readFile()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22863170/

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