多个 res.send/json - 发送后无法设置 headers
multiple res.send/json - can't set headers after they are sent
我想知道是否可以用相同的方法进行多次恢复。send/json。我对此有一个大问题,因为我想将一个函数开发成 Web-Worker 以每分钟调用一个放置请求,但在第二个请求中我得到 "can't set headers after they are sent."。我知道这是不可能的,但我想知道是否存在某种方式 运行.
exports.update = function (req, res) {
var feed = req.feed;
feed.title = req.body.title;
feed.apifeed = req.body.apifeed;
feed.apikey = req.body.apikey;
feed.active = req.body.active;
if(feed.apifeed && feed.apikey && feed.active){
var t = Threads.create();
t.eval(setInterval(
function(){
async.parallel([
function(callback, data){
var url = 'https://api.xively.com/v2/feeds/' + feed.apifeed + '.json?key=' + feed.apikey;
sensordata.getSensorData(url, function(data){
callback(null, data);
});
}
], function(err, data){
feed.content[0].value = data[0][0].value;
feed.content[0].date = new Date();
feed.save(function (err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(feed);
}
});
});
}, 5000)
);
}
};
感谢您的支持,等待您的回复。您好!
您不能多次响应请求,那没有意义。
如果需要流式传输数据,则需要使用长轮询、WebSockets、Server-sent Events 等
此外,假设 Threads.create()
执行我认为可能正在执行的操作,生成一个 OS 线程只是为了执行您当前正在执行的操作是一种资源浪费。该代码块中没有任何内容是 CPU-bound.
我想知道是否可以用相同的方法进行多次恢复。send/json。我对此有一个大问题,因为我想将一个函数开发成 Web-Worker 以每分钟调用一个放置请求,但在第二个请求中我得到 "can't set headers after they are sent."。我知道这是不可能的,但我想知道是否存在某种方式 运行.
exports.update = function (req, res) {
var feed = req.feed;
feed.title = req.body.title;
feed.apifeed = req.body.apifeed;
feed.apikey = req.body.apikey;
feed.active = req.body.active;
if(feed.apifeed && feed.apikey && feed.active){
var t = Threads.create();
t.eval(setInterval(
function(){
async.parallel([
function(callback, data){
var url = 'https://api.xively.com/v2/feeds/' + feed.apifeed + '.json?key=' + feed.apikey;
sensordata.getSensorData(url, function(data){
callback(null, data);
});
}
], function(err, data){
feed.content[0].value = data[0][0].value;
feed.content[0].date = new Date();
feed.save(function (err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(feed);
}
});
});
}, 5000)
);
}
};
感谢您的支持,等待您的回复。您好!
您不能多次响应请求,那没有意义。
如果需要流式传输数据,则需要使用长轮询、WebSockets、Server-sent Events 等
此外,假设 Threads.create()
执行我认为可能正在执行的操作,生成一个 OS 线程只是为了执行您当前正在执行的操作是一种资源浪费。该代码块中没有任何内容是 CPU-bound.