Javascript 是否有到'的超时;回答:写';node.js中的方法?
我使用Mongoose游标检索大量数据,并在接收每个部分时逐步发送。为此,我使用方法Javascript 是否有到'的超时;回答:写';node.js中的方法?,javascript,node.js,express,Javascript,Node.js,Express,我使用Mongoose游标检索大量数据,并在接收每个部分时逐步发送。为此,我使用方法res.write() 从上面的代码中可以看出,我有一个变量limit,可以知道何时编写响应的下一部分。如果这个变量太大,则需要更多的时间来组装每个部件,并且在我编写它之前查询就完成了。(如果我减少这个变量,它可以正常工作) 发生这种情况时,响应只包含字符串:“[”。就好像它会在一定时间后调用方法res.end() 我的问题是:使用res.write()方法时是否有超时,然后(如果不继续写入或发送响应)res.e
res.write()
从上面的代码中可以看出,我有一个变量limit,可以知道何时编写响应的下一部分。如果这个变量太大,则需要更多的时间来组装每个部件,并且在我编写它之前查询就完成了。(如果我减少这个变量,它可以正常工作)
发生这种情况时,响应只包含字符串:“[”
。就好像它会在一定时间后调用方法res.end()
我的问题是:使用
res.write()
方法时是否有超时,然后(如果不继续写入或发送响应)res.end()调用了
?还是我遗漏了什么?对于res.write
,没有超时。但是,如果您查看,当头在第一次调用response.write时被隐式设置,它们可能不是您想要的
在发送数据之前,即当您收到请求时,我会尝试显式设置这些标头:
response.setHeader('Connection', 'Transfer-Encoding');
response.setHeader('Content-Type', 'text/html; charset=utf-8');
response.setHeader('Transfer-Encoding', 'chunked');
我还想在响应中添加一个简单的检查。编写以确保每个区块都已刷新:
/*限制表示每个CSV长度*/
如果(docs.length==限制){
让chunk=JSON.stringify(docs);
if(res.write(`${chunk},`)){
文件=[];
}否则{
log(`oops!chunk${chunk}`有点问题);
}
}
响应。write
是node.js方法
response.setHeader('Connection', 'Transfer-Encoding');
response.setHeader('Content-Type', 'text/html; charset=utf-8');
response.setHeader('Transfer-Encoding', 'chunked');