我正在使用 gulp,并且想创建一个可以通过管道传输的函数,该函数将输入传递到输出并向控制台写入一行。
例如:
this.src('/foo')
.pipe(myFunction)
.pipe(...)
有人可以帮助我理解 myFunction
需要是什么样子吗?
以下代码使流停止运行。如何确保流数据继续传递?
function myFunction(obj) {
var stream = new Stream.Transform({objectMode: true});
stream._transform = function () {
console.log('foo bar bam baz');
};
return stream;
}
最佳答案
毫无疑问,转换流意味着数据的转换。一个例子是 zlib 流,它压缩写入其中的数据,并且可以从同一个流中读出压缩后的字节。
您正在创建一个不转换任何内容的转换流 - 这很好。但您仍然需要传递“转换后的值”(在本例中为相同的值)。在当前形式中,您的流仅消耗放入的内容。 _transform 函数接收 3 个参数:数据、编码和回调,必须像这样调用:
function myFunction(obj) {
var stream = new Stream.Transform({objectMode: true});
stream._transform = function (data, encoding, callback) {
console.log('foo bar bam baz');
callback(null, data);
};
return stream;
}
来源:https://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback
关于 Node 流的优秀指南: https://github.com/substack/stream-handbook
关于javascript - JavaScript 中的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963799/