【发布时间】:2019-11-26 23:04:07
【问题描述】:
所以我尝试创建一个 HTML 文件,然后在用户发出 GET 请求时将其发送(作为更大项目的第一步)作为响应。根据用户提供的请求参数,HTML 文件中应该有相应的内容。
首先,我尝试了一个简单的示例,我使用了async 函数,因为必须在创建输出文件后做出响应。
问题是:文件中包含正确的信息(在本例中只是元素列表),但不幸的是,当我运行节点应用程序并发出请求时,正文中什么也没有。我在await 之后调用了res.sendFile 以确保文件已成功写入。我错过了什么吗?我对 ASYNC/AWAIT 过程的理解有误吗?
下面是我的代码的 sn-p。
function writeFile(N, name) { //function that writes the list of elements in a html file
var stream = fs.createWriteStream(FILEPATH, 'utf-8'); //filepath being the actual output file
stream.once("open", () => {
for (let i = 0; i < N; i++) {
stream.write(`<li>idx=${i} and nm=${name}</li>\n`);
}
stream.end();
});
}
app.get('/list/:name/number/:id', (req, res) => { //the params
var fun = async() => {
try {
await writeFile(req.params.id, req.params.name); //wait for writing into file
res.sendFile(FILEPATH);
} catch (err) {
console.log(err);
res.send(err);
}
}
fun();
});
提前谢谢你:)
【问题讨论】: