亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

異步處理導致的Can\'t set headers after they are sent??

異步處理導致的Can\'t set headers after they are sent??

梵蒂岡之花 2019-04-21 20:15:15
暫時沒找到問題的所在。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});})這樣是不會報錯的。--前面的代碼都沒返回數據給前臺的。
查看完整描述

2 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

Can'tsetheadersaftertheyaresent;出現這個錯誤就表示。你在一個已經關閉的連接上又做一些寫操作。無論是res.json()還是res.send()底層代碼都是用res.end()結束。也就是說如果你res.json()后又有出現了res.xxxx()的操作就會報上面的那個錯誤
你上面第一個例子報錯是因為你在response調用end()后又出現了res的讀寫操作
                            
查看完整回答
反對 回復 2019-04-21
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

因為在connection.query未結束的時候調用了res的方法,也就是一個請求還沒得到回應的時候你又發了一個消息頭(請求),所以報錯
                            
查看完整回答
反對 回復 2019-04-21
  • 2 回答
  • 0 關注
  • 412 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號