node.js - 我必须在可读事件处理程序中重复调用 readable.read() 吗?

标签 node.js node.js-stream

假设我创建了一个名为 Parser 的转换流,它可以像普通流一样写入,但作为对象流读取。我正在为使用此转换流的代码使用 readable 事件:

var parser = new Parser();
parser.on('readable', function () {
    var data = parser.read();
    console.log(data);
});

在这个事件处理程序中,我必须重复调用parser.read()吗?或者,对于从我的转换流中推送的每个对象,readable 是否会自行触发?

最佳答案

根据 Node 文档,"Once the internal buffer is drained, a readable event will fire again when more data is available,"因此,如果您只调用了一次 read() 并且还有更多数据要读取,则您必须记住稍后再调用 read()

您可以在 while 循环中调用 read()(在您的“可读”事件处理程序中)直到它返回 null,然后等待下一个“可读”事件。

关于node.js - 我必须在可读事件处理程序中重复调用 readable.read() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23452846/

相关文章:

ios - 如何将带有 Wit.ai iOS SDK 的 iOS 应用程序连接到运行 wit.ai 的 node.js 应用程序?

JavaScript 绑定(bind)与匿名函数

javascript - Node ffi 指向结构体的指针

node.js 安装程序在 Windows 7 上失败,出现 'CAQuietExec Failed' 和 1603 错误代码

node.js - 通过管道传输同一流两次会产生无限循环

javascript - mongodb 和 node.js 驱动程序未连接聊天休息 api

node.js - 如何将缓冲区包装为 stream2 可读流?

javascript - 如何使用原生JS在浏览器中创建node.js风格的可读流?

javascript - Node.js 使用 setTimeout() 暂停和恢复流

javascript - post API调用和使用post方法提交表单有什么区别?