当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js transform._transform(chunk, encoding, callback)用法及代码示例


transform._transform(chunk, encoding, callback)

  • chunk <Buffer> | <string> | <any> 要转换的 Buffer,从传递给 stream.write() string 转换而来。如果流的 decodeStrings 选项是 false 或流在对象模式下运行,则不会转换块并且将是传递给 stream.write() 的任何内容。
  • encoding <string> 如果块是字符串,那么这是编码类型。如果块是缓冲区,那么这是特殊值 'buffer' 。在这种情况下忽略它。
  • callback <Function> 处理提供的chunk 后要调用的回调函数(可选带有错误参数和数据)。

此函数不得由应用程序代码直接调用。它应该由子类实现,并且只能由内部Readable 类方法调用。

所有Transform 流实现必须提供_transform() 方法来接受输入并产生输出。 transform._transform() 实现处理正在写入的字节,计算输出,然后使用 transform.push() 方法将该输出传递到可读部分。

transform.push() 方法可能会被调用零次或多次以从单个输入块生成输出,具体取决于作为块的结果要输出多少。

任何给定的输入数据块都可能不会产生任何输出。

callback 函数必须仅在当前块完全消耗时调用。如果在处理输入时发生错误,则传递给 callback 的第一个参数必须是 Error 对象,否则必须是 null。如果将第二个参数传递给 callback ,它将被转发到 transform.push() 方法。换句话说,以下是等价的:

transform.prototype._transform = function(data, encoding, callback) {
  this.push(data);
  callback();
};

transform.prototype._transform = function(data, encoding, callback) {
  callback(null, data);
};

transform._transform() 方法以下划线为前缀,因为它是定义它的类的内部,不应由用户程序直接调用。

transform._transform() 永远不会被并行调用;流实现了队列机制,并且为了接收下一个块,必须同步或异步调用callback

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 transform._transform(chunk, encoding, callback)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。