gpt4 book ai didi

javascript - 父类(super class)化stream.Duplex的问题

转载 作者:行者123 更新时间:2023-12-03 04:38:23 25 4
gpt4 key购买 nike

我正在尝试通过扩展stream.Readable来实现可读流。

根据文档,我所要做的就是实现 _read()。

我不明白的是,当在 _read 中没有数据时该怎么办,或者一旦我再次有数据,如何触发对 _read 的另一个调用。我在 Readable 中没有看到一个概念来应对数据传输缓慢或延迟的情况。我可以看到在调用 pipeline() 函数之后立即调用 _read() 。

如果在 _read 中的任何时候我没有数据,我必须返回而不传递,并且似乎 _read 永远不会再次被调用。我尝试在数据准备好后发出可读事件,但这不会触发对 _read 的调用。

此问题不仅在开始时发生,而且在我的源需要时间交付时也可能发生。 Stream.Readable 不支持慢速源吗?

最佳答案

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

实际上没有什么可以阻止您随时推送任意数量的数据,但是如果您不检查 push() 的返回值,最终可能会在内存中缓冲太多数据重视并采取相应行动。

此外,在继承/子类 Readable 时,您需要确保在流的上下文中调用父类(super class)构造函数(对于 ES6 类)或 Readable 构造函数实例 (this) 在您自己的构造函数中(对于 ES6 之前的类/原型(prototype)继承)(例如 Readable.call(this, {/*可选可读设置*/}) .

关于javascript - 父类(super class)化stream.Duplex的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com