【发布时间】:2016-05-09 09:01:36
【问题描述】:
我遇到了“发送后无法设置标头”错误的具体问题。
代码是这个:
create: (request, response, next) ->
socket = @app.socket
#
# This method will be used to call the right method inside
# the emails service.
data = JSON.stringify(
Object.assign request.body.data, method: 'server'
)
socket.send data
socket.on 'message', (result) =>
result = JSON.parse(
result.toString()
)
if result.code is 'success'
@model.insertAsync request.body
.then (result) ->
response.json data: result
return
.catch next
return
return
我正在使用两台服务器和套接字连接在它们之间进行通信。当我想创建一封电子邮件时,我向其他服务器发送一条消息并等待结果,如果结果是“成功”,我将数据发回(我使用的是 Ember,所以我需要在保存后发送数据)。现在的问题:当我第一次发送电子邮件时一切正常,当我第二次尝试时,我的终端中显示一条错误消息:
Error: Can't set headers after they are sent.
按照表达,错误在这一行:
response.json data: result
或在 JS 中:
response.json({data: result});
纯JS中的代码:
create: function(request, response, next) {
var data, socket;
socket = this.app.socket;
data = JSON.stringify(Object.assign(request.body.data, {
method: 'server'
}));
socket.send(data);
socket.on('message', (function(_this) {
return function(result) {
result = JSON.parse(result.toString());
if (result.code === 'success') {
_this.model.insertAsync(request.body).then(function(result) {
response.json({
data: result
});
})["catch"](next);
}
};
})(this));
}
提前谢谢各位!
【问题讨论】:
标签: javascript node.js express coffeescript