[英]Node.js streams
Im using the zlib component of node js to deflate data, using 我使用节点js的zlib组件缩小数据,使用
var stream = zlib.createDeflate({ "level": level });
stream.write(string);
stream.on('data', function(data) {console.log(data.toString())});
However, the the data callback is only run once with a buffer 'x'. 但是,数据回调仅在缓冲区“ x”下运行一次。 What I want is to extract the deflated data from the stream into a variable, asynchronous or not. 我想要的是将流中的压缩数据提取到一个变量中,无论是否异步。 All examples of streams that I have found are writing data between streams. 我发现的所有流示例都在流之间写入数据。
Try this 尝试这个
var stream = zlib.createDeflate({ "level": level });
var buffers = [];
var result;
stream.on('data', function(data) {buffers.push(data)});
stream.on('close', function() {
result = Buffer.concat(buffers);
console.log('COMPRESSED DATA:', result);
})
stream.write(string);
stream.end();
I ended up using 我最终使用
function deflate(string, level) {
var fiber = fibers.current;
var result = [];
var out = new stream.Stream();
out.write = function(data) {
result.push(data);
}
out.end = function() {
result = Buffer.concat(result);
fiber.run(result.toString('base64'));
}
var deflate = zlib.createDeflate({ "level": level });
deflate.end(string, 'utf8');
deflate.pipe(out);
return fibers.yield();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.