Exp*_*lls 4 javascript stream node.js
我正在实现一个简单的转换流,它从流中读取字符串,对其进行操作,然后将其吐出。_transform我的(重要部分)的实现如下所示:
_transform = function (chunk, enc, done) {
var x,
str = chunk.toString();
for (x = 0; x < str.length; x++) {
this.push(doTransformation(str.charCodeAt(x)), enc);
}
done();
};
Run Code Online (Sandbox Code Playgroud)
现在,doTransformation将仅返回该字符代码中的字符,因此这实际上只是this.push(str[x]). 测试时使用:
process.stdin
.pipe(explosionPillsTransform())
.pipe(process.stdout)
Run Code Online (Sandbox Code Playgroud)
我收到错误
类型错误:未知编码:缓冲区
这似乎是因为enc是缓冲区。enc实际上,如果我从 中删除参数,一切都会完美运行this.push,如下所示:
this.push(doTransformation(str.charCodeAt(x)))
Run Code Online (Sandbox Code Playgroud)
...但我见过的一些例子使用了第二个参数。有没有一个好方法让我知道何时使用编码参数或何时省略它?
如果“缓冲区”编码chunk已经是缓冲区,则它是多余的。如果您使用push()字符串调用,则需要指定正确的编码。如果您传入 Buffer,则可以删除它(enc如果它设置为“buffer”)。
| 归档时间: |
|
| 查看次数: |
2402 次 |
| 最近记录: |