为啥转换流在第一次写入后停止写入?
Posted
技术标签:
【中文标题】为啥转换流在第一次写入后停止写入?【英文标题】:Why does a Transform stream stop writing after frist write?为什么转换流在第一次写入后停止写入? 【发布时间】:2020-09-17 17:44:06 【问题描述】:在下面的示例中,它将“foo”写入 process.stdout 一次。为什么不写“foo”10次?
const Transform = require('stream');
class Stream extends Transform
constructor()
super(autoDestroy : false, emitClose :false);
_transform(chunk, encoding, callback)
this.push(chunk);
let stream = new Stream();
stream.pipe(process.stdout, end:false);
for (let i = 0; i < 10; i++)
stream.write('foo');
【问题讨论】:
【参考方案1】:它没有打印“foo”10次的原因是我没有仔细阅读文档:
回调函数必须在当前块被完全消耗时调用。如果在处理输入时发生错误,则传递给回调的第一个参数必须是 Error 对象,否则为 null。如果第二个参数传递给回调,它将被转发到 readable.push()...
_transform(chunk, encoding, callback)
this.push(chunk);
callback();
修复它。
【讨论】:
以上是关于为啥转换流在第一次写入后停止写入?的主要内容,如果未能解决你的问题,请参考以下文章
没有写入时,为啥 Elasticsearch 每隔“n”秒执行一次索引?