Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建node.js可写流,该流将数据代理到另一个可写流,但首先预处理它自己的一些数据_Javascript_Node.js - Fatal编程技术网

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)并不能真正解决问题