异步处理导致的Can\'t set headers after they are sent??

暂时没找到问题的所在。
app.post('/chart',function(req,res){
varSQL='xxxxxxx';
connection.query(SQL,function(err,rows){
res.send(rows);
})
})
如果这样写的话会报错:Can'tsetheadersaftertheyaresent;
如果是写成:
app.post('/chart',function(req,res){
varSQL='xxxxxxxxxx';
connection.query(SQL,function(err),rows){
xxxxxxx
};
res.send({status:0});
})
这样是不会报错的。--
前面的代码都没返回数据给前台的。
梵蒂冈之花
浏览 427回答 2
2回答

小怪兽爱吃肉

Can'tsetheadersaftertheyaresent;出现这个错误就表示。你在一个已经关闭的连接上又做一些写操作。无论是res.json()还是res.send()底层代码都是用res.end()结束。也就是说如果你res.json()后又有出现了res.xxxx()的操作就会报上面的那个错误你上面第一个例子报错是因为你在response调用end()后又出现了res的读写操作

qq_花开花谢_0

因为在connection.query未结束的时候调用了res的方法,也就是一个请求还没得到回应的时候你又发了一个消息头(请求),所以报错
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript