如何分块的对象stream?

我有一个对象stream( objectMode: true ),并希望将其块大小相等的数组,以便我可以pipe他们到另一个接受数组的函数。 我发现以下模块似乎可以达到缓冲区的效果,但不能用于对象:

  • https://www.npmjs.com/package/block-stream
  • https://www.npmjs.com/package/chunkit
  • https://www.npmjs.com/package/chunking-streams
  • https://www.npmjs.com/package/fixed-chunk-stream
  • https://www.npmjs.com/package/chunk-stream

你知道一个模块可以做到这一点的对象stream或有一个明显简单的DIY解决scheme吗?

我发现以下工作:

 function ItemCollector (chunkSize) { this._buffer = []; this._chunkSize = chunkSize; stream.Transform.call(this, { objectMode: true }); } util.inherits(ItemCollector, stream.Transform); ItemCollector.prototype._transform = function (chunk, encoding, done) { if (this._buffer.length == this._chunkSize) { this.push(this._buffer); this._buffer = []; } this._buffer.push(chunk); done(); }; ItemCollector.prototype._flush = function () { this.push(this._buffer); }; 

像这样使用:

 objectStream.pipe(new ItemCollector(10)).pipe(otherFunction)