我正在努力使自己在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;
readFile()
?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();
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句