Javascript 创建node.js可写流,该流将数据代理到另一个可写流,但首先预处理它自己的一些数据
我有一个可写的流,我想用我自己的流来包装它,以便将一些数据预先添加到输出流中的任何内容中 我通常会编写Javascript 创建node.js可写流,该流将数据代理到另一个可写流,但首先预处理它自己的一些数据,javascript,node.js,Javascript,Node.js,我有一个可写的流,我想用我自己的流来包装它,以便将一些数据预先添加到输出流中的任何内容中 我通常会编写inputStream.pipe(outputStream),其中inputStream将提供foo-bar,而outputStream将接收foo-bar 我希望能够编写inputStream.pipe(proxyStream('prefix',outputStream)),其中inputStream将提供foobar,但outputStream将接收前缀foobar 我尝试了以下代码,但我得
inputStream.pipe(outputStream)
,其中inputStream
将提供foo-bar
,而outputStream将接收foo-bar
我希望能够编写inputStream.pipe(proxyStream('prefix',outputStream))
,其中inputStream
将提供foobar
,但outputStream
将接收前缀foobar
我尝试了以下代码,但我得到了错误:在管道启动后几乎立即在结束后写入
class DetectStream扩展流。可写{
构造函数(前缀,输出){
超级();
这个。_输出=输出;
这个._output.write(前缀'utf-8');
}
_写入(块、enc、下一个){
this.\u output.write(块、enc、next);
}
}
为什么不先写入输出流
,然后再将输入流
导入其中
function proxyStream (prefix, output) {
output.write(prefix, 'utf-8')
return output
}
然后像你说的那样使用它:
inputStream.pipe(proxyStream('prefix ', outputStream))
您可以在传递到.pipe()
之前修改流。如何修改流?读取inputStream
,修改,转换回writeablestream
,传递到.pipe()
在我的用例中,inputStream
实际上是一个恒定的数据“流”,不可能全部使用它。“不可能全部消耗掉。”你是什么意思?如果数据无法修改,你如何将数据附加到流中?你可以读取字节块的流,并将修改后的块传递给.pipe()
虽然这样做有效,但在您希望前缀行为被封装为可重用流类的一部分的情况下(例如,为了避免复制/粘贴相同的输出。write(…)`code where)并不能真正解决问题