我将一些json数据作为gzipped文件存储在服务器上(以便减少传输的数据量,同时也减少服务器上的磁盘使用量)。
现在,我想在客户端(运行react/node的浏览器)解压缩和解析json数据。
我想,使用oboe.js可能是完成这项任务的合适选择。不幸的是,在浏览器中工作时,似乎不可能直接传递oboe流。我所依赖的解决方案是在解压数据块后将它们提供给双胞胎(请参阅本文底部的代码)。
虽然这确实有效,但如果节点侦听器需要一些时间来处理节点(当然,解析数据需要一些时间,但我希望应用程序保持响应,甚至可能根据已经处理的数据更新视图),浏览器会冻结一段时间。
我怀疑所有的数据基本上都是一次输入到双簧管,而不是等到最后一块数据被读取。这是正确的吗?有没有一种合适的方法来减慢输入到双簧管的数据量,或者有没有一种更直接的方法来处理gzip流和双管乐器?
var o = oboe();
var gunzip = zlib.createGunzip();
gunzip.on('data', (chunk) => o.emit('data', chunk.toString()))
.on('end', o.emit('end'));
request(options).on('response', response => {
o.emit('start', response.statusCode, response.headers);
response.pipe(gunzip);
};
o.node('{name}', () => {
//Do stuff with node
return oboe.drop;
});发布于 2019-01-23 00:26:36
似乎你不能正确使用管道功能(如速度调整),因为在第4-5行的“包装器”,只是删除它。
这是有关管道node.js的更多信息
https://stackoverflow.com/questions/54311041
复制相似问题