Я пытаюсь настроить синхронный асинхронный режим в 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), как я могу это сигнализировать?