Node.js de fs.readFileSync () para fs.readFile ()
Estou tentando entender meu problema de forma síncrona vs assíncrona no Node.js, em particular para ler um arquivo html.
Em um manipulador de solicitações, a versão síncrona que estou usando, que funciona, é a seguinte:
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;
Qual seria a versão usando readFile () ??Entendo que o readFile é assíncrono, então, teoricamente, devo esperar que o arquivo inteiro seja lido antes de renderizá-lo. Por isso, devo introduzir um addListener? Eu posso estar confundindo coisas diferentes.Edit: Eu tentei refatorar o código assim:
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();
}
Recebo uma página em branco, acho que é porque deve esperar que todos os dados tenham sido lidos, antes de resp.write (data), como sinalizo isso?