在node.js(express.js)中,我无法在端点中进行多次返回。
CREATE TABLE SALES
(
CUSTOMER VARCHAR(80)
, REGION CHAR(5)
, YEAR INTEGER
)
IN USERSPACE1
DISTRIBUTE BY HASH (YEAR);
我如何等待并收集要完成的流,然后仅将let result = {}
socket.on('receive_stream', ({data}) => {
result = {
...result,
...data,
}
// must I send it here? res.send(result)
})
res.send(result) //this is empty object
发送给客户端?
答案 0 :(得分:0)
let result = {}
socket.on('receive_stream', ({data}) => {
result = {
...result,
...data,
}
// have to uncommented in case always opened socket
// res.send(result);
})
socket.on('end', () => {
res.send(result);
} );
但是您可以使用JSON.stringify(result)
将对象转换为字符串,并且仅在关闭套接字的情况下才有效。如果始终打开,则永远不会触发结束事件
答案 1 :(得分:0)
似乎您有2个流。因此,理论上您可以只管。
socket.pipe(res);
或
socket.on('receive_stream', data => res.emit('data', data));
socket.on('end', data => res.emit('end'));
答案 2 :(得分:0)
是的,在您的情况下,您必须在套接字的回调中调用 req.send()。
但是有很多方法,问题出在您的代码结构设计模式上,您应该阅读与“ JavaScript中的回调承诺异步等待”相关的帖子