javascript - Nodejs帖子不断加载

标签 javascript node.js

我正在编写一个服务器,并在发布时将 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/

相关文章:

node.js - 由于恶意软件,Google Adwords 拒绝了我的广告系列,但我清理了代码

javascript - 刷新 Firebase token

javascript - 如何使用按钮切换图像可见性?

JavaScript 在 div 中加载后更改 HTML 代码

javascript - $set 降低了 Vue 的性能

javascript - 检索在 Objection ORM 中的 $afterInsert Hook 中创建的模型的 ID

node.js - DynamoDB 的 Lambda 和 DAX 扫描速度非常慢

javascript - Ajax 响应字符串作为函数名称

javascript - 当鼠标悬停在网页上的文本时突出显示映射图像的部分

javascript - 从 React 组件中的脚本访问变量