javascript - JavaScript 中的流

标签 javascript node.js stream

我正在使用 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/

相关文章:

javascript - 在 Javascript (IE) 中裁剪图像

javascript - BinaryJS 替代品?通过 websockets 在浏览器和服务器之间多路复用流

javascript - 如何仅统计当天的页面浏览量?

node.js - NodeJs 无法捕获错误

javascript - Node.js 转换流仅按原样传递数据

javascript - 使用回调分配 React ref 与直接设置它之间的区别?

javascript - node.js 多房间聊天示例

javascript - 通过分配新变量来缩短属性路径是个好主意吗?

wpf - 如何在WPF中通过Kinect SDK 2将kinect彩色视频保存为硬盘流

c# - 如何将可序列化对象保存到文件/从文件恢复?