我正在努力使自己在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;
编辑:我试图重构这样的代码:
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(); }); }