我可以使用以下方法找出发送到数据处理程序的字节数:
let bytesEmitted = 0;
strm.setEncoding('utf8');
strm.on('data', d => {
bytesEmitted += Buffer.byteLength(d);
});
但是我正在寻找一种方法来访问发出的字节数而不必附加我自己的处理程序。
有一个属性-strm.bytesRead-但我担心这不能代表“发出的字节数”-它必须准确。
答案 0 :(得分:1)
This is the commit将bytesRead
属性引入到Readable
流中。
我们可以在第140行上看到,当有新的数据块可用时,属性会更新;在第148行上,只要流保持流动,此后立即发出data
事件。对于流结束而没有离开流动状态的流,您可以随时轮询或以其他方式访问bytesRead
属性,并将其视为等于实际发出的字节数。但是,如果暂停流,则缓冲的bytesRead
可能会落后于实际发出的字节,直到所有可用块都被消耗为止。
请注意,此行为没有记录,并且随时可能更改。