javascript - 异步处理导致的Can\'t set headers after they are sent??
迷茫
迷茫 2017-04-10 16:07:24
[JavaScript讨论组]

暂时没找到问题的所在。

    app.post('/chart', function(req, res){
                var SQL = 'xxxxxxx';
                connection.query(SQL, function(err, rows){
                    res.send(rows);
                })
        })
    

如果这样写的话会报错: Can't set headers after they are sent;

如果是写成 :

app.post('/chart', function(req, res){
    var SQL = 'xxxxxxxxxx';
    connection.query(SQL, function(err), rows){
            xxxxxxx
    };
    res.send({status:  0 });
})

这样是不会报错的。- -

前面的代码都没返回数据给前台的。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
PHPz

Can't set headers after they are sent;
出现这个错误就表示。你在一个已经关闭的连接上又做一些写操作。
无论是res.json() 还是 res.send()
底层代码都是用res.end()结束。
也就是说如果你 res.json()后 又有出现了 res.xxxx()的操作
就会报上面的那个错误

你上面第一个例子报错是因为你在response调用end()后又出现了res的读写操作

大家讲道理

因为在connection.query未结束的时候调用了res的方法,也就是一个请求还没得到回应的时候你又发了一个消息头(请求),所以报错

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号