Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对stream.Duplex进行超级分类时出现问题_Javascript_Node.js_Stream - Fatal编程技术网

Javascript 对stream.Duplex进行超级分类时出现问题

Javascript 对stream.Duplex进行超级分类时出现问题,javascript,node.js,stream,Javascript,Node.js,Stream,我试图通过扩展stream.readable来实现一个可读的流 根据文档,我所要做的就是实现读取 我不明白的是,当在读时我没有数据时该怎么做,或者当我再次有数据时如何触发另一个对读的调用。我认为Readable中没有一个概念可以处理缓慢或延迟交付的数据。我可以看到_read是在调用管道函数之后被调用的 如果在_read中的任何时候,我都没有数据,我必须返回而不传递数据,而且似乎再也不会调用_read了。我试图在数据准备好后发出一个可读事件,但这不会触发对_read的调用 这个问题不仅发生在开始时

我试图通过扩展stream.readable来实现一个可读的流

根据文档,我所要做的就是实现读取

我不明白的是,当在读时我没有数据时该怎么做,或者当我再次有数据时如何触发另一个对读的调用。我认为Readable中没有一个概念可以处理缓慢或延迟交付的数据。我可以看到_read是在调用管道函数之后被调用的

如果在_read中的任何时候,我都没有数据,我必须返回而不传递数据,而且似乎再也不会调用_read了。我试图在数据准备好后发出一个可读事件,但这不会触发对_read的调用

这个问题不仅发生在开始时,而且可能在我的源代码花时间交付时发生。stream.Readable不支持慢速源吗?

\u read只是一个信号,让您知道可以/应该从上游源读取更多数据。当您将数据推送到流并推送返回false时,这一点最为重要。发生这种情况时,在再次调用_read之前,不应再推送任何数据

实际上,并没有什么可以阻止您在任何时候推送任何数量的数据,但如果您不检查推送的返回值并相应地对其执行操作,那么最终可能会在内存中缓冲过多的数据


此外,在继承/subclass Readable时,您需要确保在流实例的上下文中调用ES6类的超类构造函数或Readable构造函数,这是在您自己的构造函数中调用ES6类之前的类/原型继承,例如Readable.callthis,{/*可选的Readable settings*/}

如果你认为还不够清楚,考虑向PR节点提交PR,措辞有所改变。有时,对于我们这些长期关注代码库的人来说,很难对第一次访问该项目的用户进行足够好的描述。