我正在编写一个服务器,并在发布时将 req.body 保存到带有 fs 的文件中。
客户端页面在提交时继续加载,writefile 是否需要异步,如果需要,回调应该是什么样子以及为什么页面仍在加载。
app.post('/', function(req,res) {
console.log(req.body)
fs.writeFileSync('data.txt', JSON.stringify(req.body))
})
这是因为我没有发送回复吗?
最佳答案
是的,这是因为您没有发送回复。 Express 不会自动发送响应,因此当您发布到该端点时,您必须返回响应,否则请求将挂起。
文件写入不一定是异步的,但它应该是异步的。做到这一点的现代方法是使用 promise ,例如......
new Promise(function(resolve, reject) {
fs.writeFile('data.txt', JSON.stringify(req.body), (err) =>
{
if (err) reject(err);
else resolve(data);
}
}).then(
(success) => res.send(success)
).catch(
(err) => {
console.log(err);
res.status(500).send();
}
);
如果您不想异步执行(如果它是低性能网站,则不需要),只需执行以下操作:
app.post('/', function(req,res) {
console.log(req.body)
fs.writeFileSync('data.txt', JSON.stringify(req.body))
res.send({"status": 200});
})
关于javascript - Nodejs帖子不断加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43854609/