一个请求的res.header被写入另一个请求的消息头!!??
image.png 如图所示,用JMeter,10个线程同时跑接口,有多个token值被写入了同一个返回消息头,其他该有的反而没有。同时还产生了如下错误:
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:491:11)
at ServerResponse.setHeader (_http_outgoing.js:498:3)
at ServerResponse.header (E:\formal\server\node_modules\restify\lib\response.js:218:10)
at loginResponse (E:\formal\server\controllers\user.js:48:17)
at loginResponse.next (<anonymous>)
at onFulfilled (E:\formal\server\node_modules\co\index.js:65:19)
at <anonymous>
感觉是牛头对了马嘴,这是什么鬼
12 回复
虽然还没查到根源,但是已经可以解决了。是this!!! image.png 通过在图中两处打印this,发现this指向变了。 所以用let currentRes = this.response,缓存this.presponse可以解决当前问题。
哈哈 还不如 用一个私有的 self var self = this 绑定一下当前this 虽然和 let currentRes = this.respose 原理一样。。。。